zoukankan      html  css  js  c++  java
  • C#操作Excel数据增删改查示例

    Excel数据增删改查我们可以使用c#进行操作,首先创建ExcelDB.xlsx文件,并添加两张工作表,接下按照下面的操作步骤即可
    C#操作Excel数据增删改查。 

    首先创建ExcelDB.xlsx文件,并添加两张工作表。 

    工作表1: 

    UserInfo表,字段:UserId、UserName、Age、Address、CreateTime。 

    工作表2: 

    Order表,字段:OrderNo、ProductName、Quantity、Money、SaleDate。 

    1、创建ExcelHelper.cs类,Excel文件处理类 
    复制代码代码如下:

    using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using System.Data.OleDb; 
    using System.Data; 

    namespace MyStudy.DAL 

    /// <summary> 
    /// Excel文件处理类 
    /// </summary> 
    public class ExcelHelper 
    {  // www.jbxue.com
    private static string fileName = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"/ExcelFile/ExcelDB.xlsx"; 

    private static OleDbConnection connection; 
    public static OleDbConnection Connection 

    get 

    string connectionString = ""; 
    string fileType = System.IO.Path.GetExtension(fileName); 
    if (string.IsNullOrEmpty(fileType)) return null; 
    if (fileType == ".xls") 

    connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";" + ";Extended Properties="Excel 8.0;HDR=YES;IMEX=2""; 

    else 

    connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + fileName + ";" + ";Extended Properties="Excel 12.0;HDR=YES;IMEX=2""; 

    if (connection == null) 

    connection = new OleDbConnection(connectionString); 
    connection.Open(); 

    else if (connection.State == System.Data.ConnectionState.Closed) 

    connection.Open(); 

    else if (connection.State == System.Data.ConnectionState.Broken) 

    connection.Close(); 
    connection.Open(); 

    return connection; 



    /// <summary> 
    /// 执行无参数的SQL语句 
    /// </summary> 
    /// <param name="sql">SQL语句</param> 
    /// <returns>返回受SQL语句影响的行数</returns> 
    public static int ExecuteCommand(string sql) 

    OleDbCommand cmd = new OleDbCommand(sql, Connection); 
    int result = cmd.ExecuteNonQuery(); 
    connection.Close(); 
    return result; 


    /// <summary> 
    /// 执行有参数的SQL语句 
    /// </summary> 
    /// <param name="sql">SQL语句</param> 
    /// <param name="values">参数集合</param> 
    /// <returns>返回受SQL语句影响的行数</returns> 
    public static int ExecuteCommand(string sql, params OleDbParameter[] values) 

    OleDbCommand cmd = new OleDbCommand(sql, Connection); 
    cmd.Parameters.AddRange(values); 
    int result = cmd.ExecuteNonQuery(); 
    connection.Close(); 
    return result; 


    /// <summary> 
    /// 返回单个值无参数的SQL语句 
    /// </summary> 
    /// <param name="sql">SQL语句</param> 
    /// <returns>返回受SQL语句查询的行数</returns> 
    public static int GetScalar(string sql) 

    OleDbCommand cmd = new OleDbCommand(sql, Connection); 
    int result = Convert.ToInt32(cmd.ExecuteScalar()); 
    connection.Close(); 
    return result; 


    /// <summary> 
    /// 返回单个值有参数的SQL语句 
    /// </summary> 
    /// <param name="sql">SQL语句</param> 
    /// <param name="parameters">参数集合</param> 
    /// <returns>返回受SQL语句查询的行数</returns> 
    public static int GetScalar(string sql, params OleDbParameter[] parameters) 

    OleDbCommand cmd = new OleDbCommand(sql, Connection); 
    cmd.Parameters.AddRange(parameters); 
    int result = Convert.ToInt32(cmd.ExecuteScalar()); 
    connection.Close(); 
    return result; 


    /// <summary> 
    /// 执行查询无参数SQL语句 
    /// </summary> 
    /// <param name="sql">SQL语句</param> 
    /// <returns>返回数据集</returns> 
    public static DataSet GetReader(string sql) 

    OleDbDataAdapter da = new OleDbDataAdapter(sql, Connection); 
    DataSet ds = new DataSet(); 
    da.Fill(ds, "UserInfo"); 
    connection.Close(); 
    return ds; 


    /// <summary> 
    /// 执行查询有参数SQL语句 
    /// </summary> 
    /// <param name="sql">SQL语句</param> 
    /// <param name="parameters">参数集合</param> 
    /// <returns>返回数据集</returns> 
    public static DataSet GetReader(string sql, params OleDbParameter[] parameters) 

    OleDbDataAdapter da = new OleDbDataAdapter(sql, Connection); 
    da.SelectCommand.Parameters.AddRange(parameters); 
    DataSet ds = new DataSet(); 
    da.Fill(ds); 
    connection.Close(); 
    return ds; 



    2、 创建实体类 

    2.1 创建UserInfo.cs类,用户信息实体类。 
    复制代码代码如下:

    using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using System.Data; 

    namespace MyStudy.Model 

    /// <summary> 
    /// 用户信息实体类 
    /// </summary> 
    public class UserInfo 

    public int UserId { get; set; } 
    public string UserName { get; set; } 
    public int? Age { get; set; } 
    public string Address { get; set; } 
    public DateTime? CreateTime { get; set; } 

    /// <summary> 
    /// 将DataTable转换成List数据 
    /// </summary> 
    public static List<UserInfo> ToList(DataSet dataSet) 

    List<UserInfo> userList = new List<UserInfo>(); 
    if (dataSet != null && dataSet.Tables.Count > 0) 

    foreach (DataRow row in dataSet.Tables[0].Rows) 

    UserInfo user = new UserInfo(); 
    if (dataSet.Tables[0].Columns.Contains("UserId") && !Convert.IsDBNull(row["UserId"])) 
    user.UserId = Convert.ToInt32(row["UserId"]); 

    if (dataSet.Tables[0].Columns.Contains("UserName") && !Convert.IsDBNull(row["UserName"])) 
    user.UserName = (string)row["UserName"]; 

    if (dataSet.Tables[0].Columns.Contains("Age") && !Convert.IsDBNull(row["Age"])) 
    user.Age = Convert.ToInt32(row["Age"]); 

    if (dataSet.Tables[0].Columns.Contains("Address") && !Convert.IsDBNull(row["Address"])) 
    user.Address = (string)row["Address"]; 

    if (dataSet.Tables[0].Columns.Contains("CreateTime") && !Convert.IsDBNull(row["CreateTime"]))  // www.jbxue.com
    user.CreateTime = Convert.ToDateTime(row["CreateTime"]); 

    userList.Add(user); 


    return userList; 



    2.2 创建Order.cs类,订单实体类。 
    复制代码代码如下:

    using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using System.Data; 

    namespace MyStudy.Model 

    /// <summary> 
    /// 订单实体类 
    /// </summary> 
    public class Order 

    public string OrderNo { get; set; } 
    public string ProductName { get; set; } 
    public int? Quantity { get; set; } 
    public decimal? Money { get; set; } 
    public DateTime? SaleDate { get; set; } 

    /// <summary> 
    /// 将DataTable转换成List数据 
    /// </summary> 
    public static List<Order> ToList(DataSet dataSet) 

    List<Order> orderList = new List<Order>(); 
    if (dataSet != null && dataSet.Tables.Count > 0) 

    foreach (DataRow row in dataSet.Tables[0].Rows) 

    Order order = new Order(); 
    if (dataSet.Tables[0].Columns.Contains("OrderNo") && !Convert.IsDBNull(row["OrderNo"])) 
    order.OrderNo = (string)row["OrderNo"]; 

    if (dataSet.Tables[0].Columns.Contains("ProductName") && !Convert.IsDBNull(row["ProductName"])) 
    order.ProductName = (string)row["ProductName"]; 

    if (dataSet.Tables[0].Columns.Contains("Quantity") && !Convert.IsDBNull(row["Quantity"])) 
    order.Quantity = Convert.ToInt32(row["Quantity"]); 

    if (dataSet.Tables[0].Columns.Contains("Money") && !Convert.IsDBNull(row["Money"])) 
    order.Money = Convert.ToDecimal(row["Money"]); 

    if (dataSet.Tables[0].Columns.Contains("SaleDate") && !Convert.IsDBNull(row["SaleDate"])) 
    order.SaleDate = Convert.ToDateTime(row["SaleDate"]); 

    orderList.Add(order); 


    return orderList; 



    3、创建业务逻辑类 

    3.1 创建UserInfoBLL.cs类,用户信息业务类。 
    复制代码代码如下:

    using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using System.Data; 
    using MyStudy.Model; 
    using MyStudy.DAL; 
    using System.Data.OleDb; 

    namespace MyStudy.BLL 

    /// <summary> 
    /// 用户信息业务类 
    /// </summary> 
    public class UserInfoBLL 

    /// <summary> 
    /// 查询用户列表 
    /// </summary> 
    public List<UserInfo> GetUserList() 

    List<UserInfo> userList = new List<UserInfo>(); 
    string sql = "SELECT * FROM [UserInfo$]"; 
    DataSet dateSet = ExcelHelper.GetReader(sql); 
    userList = UserInfo.ToList(dateSet); 
    return userList; 


    /// <summary> 
    /// 获取用户总数 
    /// </summary> 
    public int GetUserCount() 

    int result = 0; 
    string sql = "SELECT COUNT(*) FROM [UserInfo$]"; 
    result = ExcelHelper.GetScalar(sql); 
    return result; 


    /// <summary> 
    /// 新增用户信息 
    /// </summary> 
    public int AddUserInfo(UserInfo param) 

    int result = 0; 
    string sql = "INSERT INTO [UserInfo$](UserId,UserName,Age,Address,CreateTime) VALUES(@UserId,@UserName,@Age,@Address,@CreateTime)"; 
    OleDbParameter[] oleDbParam = new OleDbParameter[] 

    new OleDbParameter("@UserId", param.UserId), 
    new OleDbParameter("@UserName", param.UserName), 
    new OleDbParameter("@Age", param.Age), 
    new OleDbParameter("@Address",param.Address), 
    new OleDbParameter("@CreateTime",param.CreateTime) 
    }; 
    result = ExcelHelper.ExecuteCommand(sql, oleDbParam); 
    return result; 


    /// <summary> 
    /// 修改用户信息 
    /// </summary> 
    public int UpdateUserInfo(UserInfo param) 

    int result = 0; 
    if (param.UserId > 0) 

    string sql = "UPDATE [UserInfo$] SET UserName=@UserName,Age=@Age,Address=@Address WHERE UserId=@UserId"; 
    OleDbParameter[] sqlParam = new OleDbParameter[] 

    new OleDbParameter("@UserId",param.UserId), 
    new OleDbParameter("@UserName", param.UserName), 
    new OleDbParameter("@Age", param.Age), 
    new OleDbParameter("@Address",param.Address) 
    }; 
    result = ExcelHelper.ExecuteCommand(sql, sqlParam); 

    return result; 


    /// <summary> 
    /// 删除用户信息 
    /// </summary> 
    public int DeleteUserInfo(UserInfo param) 

    int result = 0; 
    if (param.UserId > 0) 

    string sql = "DELETE [UserInfo$] WHERE UserId=@UserId"; 
    OleDbParameter[] sqlParam = new OleDbParameter[] 

    new OleDbParameter("@UserId",param.UserId), 
    }; 
    result = ExcelHelper.ExecuteCommand(sql, sqlParam); 

    return result; 



    3.2 创建OrderBLL.cs类,订单业务类 
    复制代码代码如下:

    using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using System.Data; 
    using MyStudy.Model; 
    using MyStudy.DAL; 
    using System.Data.OleDb; 

    namespace MyStudy.BLL 

    /// <summary> 
    /// 订单业务类 
    /// </summary> 
    public class OrderBLL 

    /// <summary> 
    /// 查询订单列表 
    /// </summary> 
    public List<Order> GetOrderList() 

    List<Order> orderList = new List<Order>(); 
    string sql = "SELECT * FROM [Order$]"; 
    DataSet dateSet = ExcelHelper.GetReader(sql); 
    orderList = Order.ToList(dateSet); 
    return orderList; 


    /// <summary> 
    /// 获取订单总数 
    /// </summary> 
    public int GetOrderCount() 

    int result = 0; 
    string sql = "SELECT COUNT(*) FROM [Order$]"; 
    result = ExcelHelper.GetScalar(sql); 
    return result; 


    /// <summary> 
    /// 新增订单 
    /// </summary> 
    public int AddOrder(Order param) 
    {  // www.jbxue.com
    int result = 0; 
    string sql = "INSERT INTO [Order$](OrderNo,ProductName,Quantity,Money,SaleDate) VALUES(@OrderNo,@ProductName,@Quantity,@Money,@SaleDate)"; 
    OleDbParameter[] oleDbParam = new OleDbParameter[] 

    new OleDbParameter("@OrderNo", param.OrderNo), 
    new OleDbParameter("@ProductName", param.ProductName), 
    new OleDbParameter("@Quantity", param.Quantity), 
    new OleDbParameter("@Money",param.Money), 
    new OleDbParameter("@SaleDate",param.SaleDate) 
    }; 
    result = ExcelHelper.ExecuteCommand(sql, oleDbParam); 
    return result; 


    /// <summary> 
    /// 修改订单 
    /// </summary> 
    public int UpdateOrder(Order param) 

    int result = 0; 
    if (!String.IsNullOrEmpty(param.OrderNo)) 

    string sql = "UPDATE [Order$] SET ProductName=@ProductName,Quantity=@Quantity,Money=@Money WHERE OrderNo=@OrderNo"; 
    OleDbParameter[] sqlParam = new OleDbParameter[] 

    new OleDbParameter("@OrderNo",param.OrderNo), 
    new OleDbParameter("@ProductName",param.ProductName), 
    new OleDbParameter("@Quantity", param.Quantity), 
    new OleDbParameter("@Money", param.Money) 
    }; 
    result = ExcelHelper.ExecuteCommand(sql, sqlParam); 

    return result; 


    /// <summary> 
    /// 删除订单 
    /// </summary> 
    public int DeleteOrder(Order param) 

    int result = 0; 
    if (!String.IsNullOrEmpty(param.OrderNo)) 

    string sql = "DELETE [Order$] WHERE OrderNo=@OrderNo"; 
    OleDbParameter[] sqlParam = new OleDbParameter[] 

    new OleDbParameter("@OrderNo",param.OrderNo), 
    }; 
    result = ExcelHelper.ExecuteCommand(sql, sqlParam); 

    return result; 


  • 相关阅读:
    IOS 自动布局-UIStackPanel和UIGridPanel(三)
    IOS 自动布局-UIStackPanel和UIGridPanel(二)
    IOS 自动布局-UIStackPanel和UIGridPanel(一)
    我的新博客
    Topcoder SRM655 DIV1 500 Nine
    BestCoder Round #38 1002 Greatest Greatest Common Divisor 筛法
    BestCoder Round #38 1001 Four Inages Strategy 暴力
    Google Code Jam 2015 Round 1A Haircut 二分
    Google Code Jam 2015 Round 1A Mushroom Monster 水
    Topcoder SRM656 DIV1 250 RandomPancakeStack 概率DP
  • 原文地址:https://www.cnblogs.com/linuxnotes/p/3405778.html
Copyright © 2011-2022 走看看