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 { 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; } } }