CharlesChen's Technical Space

简单实用是我一直在软件开发追求的目标(I Focus on. Net technology, to make the greatest efforts to enjoy the best of life.)
Not the best, only better
  博客园  :: 首页  :: 联系 :: 订阅 订阅  :: 管理

C#常用工具类——Excel操作类(ZT)

Posted on 2017-05-23 14:39  Charles Chen  阅读(1546)  评论(0编辑  收藏  举报

本文转载于: http://www.cnblogs.com/zfanlong1314/p/3916047.html

  1     /// 常用工具类——Excel操作类
  2     /// <para> ------------------------------------------------</para>
  3     /// <para> CreateConnection:根据Excel文件路径和EXCEL驱动版本生成OleConnection对象实例</para>
  4     /// <para> ExecuteDataSet:执行一条SQL语句,返回一个DataSet对象</para>
  5     /// <para> ExecuteDataTable:执行一条SQL语句,返回一个DataTable对象</para>
  6     /// <para> ExecuteDataAdapter:表示一组数据命令和一个数据库连接,它们用于填充 DataSet 和更新数据源。</para>
  7     /// <para> ExecuteNonQuery:执行数据库语句返回受影响的行数,失败或异常返回-1[通常为:INSERT、DELETE、UPDATE 和 SET 语句等命令]。</para>
  8     /// <para> ExecuteScalar:执行数据库语句返回第一行第一列,失败或异常返回null</para>
  9     /// <para> ExecuteDataReader:执行数据库语句返回一个自进结果集流</para>
 10     /// <para> GetWorkBookName:获取Excel中的所有工作簿</para>
 11     /// </summary>
 12     public class ExcelHelper
 13     {
 14         private ExcelHelper() { }
 15 
 16         #region EXCEL版本
 17         /// <summary>
 18         /// EXCEL版本
 19         /// </summary>
 20         public enum ExcelVerion
 21         {
 22             /// <summary>
 23             /// Excel97-2003版本
 24             /// </summary>
 25             Excel2003,
 26             /// <summary>
 27             /// Excel2007版本
 28             /// </summary>
 29             Excel2007
 30         }
 31         #endregion
 32 
 33         #region 根据EXCEL路径生成OleDbConnectin对象
 34         /// <summary>
 35         /// 根据EXCEL路径生成OleDbConnectin对象
 36         /// </summary>
 37         /// <param name="ExcelFilePath">EXCEL文件相对于站点根目录的路径</param>
 38         /// <param name="Verion">Excel数据驱动版本:97-2003或2007,分别需要安装数据驱动软件</param>
 39         /// <returns>OleDbConnection对象</returns>
 40         public static OleDbConnection CreateConnection(string ExcelFilePath, ExcelVerion Verion)
 41         {
 42             OleDbConnection Connection = null;
 43             string strConnection = string.Empty;
 44             try
 45             {
 46                 switch (Verion)
 47                 {
 48                     case ExcelVerion.Excel2003: //读取Excel97-2003版本
 49                         strConnection = "Provider=Microsoft.Jet.OLEDB.4.0; " +
 50 "Data Source=" + ExcelFilePath + ";Extended Properties=Excel 8.0";
 51                         break;
 52                     case ExcelVerion.Excel2007: //读取Excel2007版本
 53                         strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;HDR=YES';data source=" + ExcelFilePath;
 54                         break;
 55                 }
 56                 if (!string.IsNullOrEmpty(strConnection)) Connection = new OleDbConnection(strConnection);
 57             }
 58             catch (Exception)
 59             {
 60             }
 61 
 62             return Connection;
 63         }
 64         #endregion
 65 
 66         #region 创建一个OleDbCommand对象实例
 67         /// <summary>
 68         /// 创建一个OleDbCommand对象实例
 69         /// </summary>
 70         /// <param name="CommandText">SQL命令</param>
 71         /// <param name="Connection">数据库连接对象实例OleDbConnection</param>
 72         /// <param name="OleDbParameters">可选参数</param>
 73         /// <returns></returns>
 74         private static OleDbCommand CreateCommand(string CommandText, OleDbConnection Connection, params System.Data.OleDb.OleDbParameter[] OleDbParameters)
 75         {
 76             if (Connection.State == ConnectionState.Closed)
 77                 Connection.Open();
 78             OleDbCommand comm = new OleDbCommand(CommandText, Connection);
 79             if (OleDbParameters != null)
 80             {
 81                 foreach (OleDbParameter parm in OleDbParameters)
 82                 {
 83                     comm.Parameters.Add(parm);
 84                 }
 85             }
 86             return comm;
 87         }
 88         #endregion
 89 
 90         #region 执行一条SQL语句,返回一个DataSet对象
 91         /// <summary>
 92         /// 执行一条SQL语句,返回一个DataSet对象
 93         /// </summary>
 94         /// <param name="Connection">OleDbConnection对象</param>
 95         /// <param name="CommandText">SQL语句</param>
 96         /// <param name="OleDbParameters">OleDbParameter可选参数</param>
 97         /// <returns>DataSet对象</returns>
 98         public static DataSet ExecuteDataSet(OleDbConnection Connection, string CommandText, params OleDbParameter[] OleDbParameters)
 99         {
100             DataSet ds = new DataSet();
101             try
102             {
103                 OleDbCommand comm = CreateCommand(CommandText, Connection, OleDbParameters);
104                 OleDbDataAdapter da = new OleDbDataAdapter(comm);
105                 da.Fill(ds);
106             }
107             catch (Exception ex)
108             {
109                 throw ex;
110             }
111             finally
112             {
113                 if (Connection.State == ConnectionState.Open) Connection.Close();
114             }
115 
116             return ds;
117         }
118         #endregion
119 
120         #region 执行一条SQL语句,返回一个DataTable对象
121         /// <summary>
122         /// 执行一条SQL语句,返回一个DataTable对象
123         /// </summary>
124         /// <param name="Connection">OleDbConnection对象</param>
125         /// <param name="CommandText">SQL语句</param>
126         /// <param name="OleDbParameters">OleDbParameter可选参数</param>
127         /// <returns>DataSet对象</returns>
128         public static DataTable ExecuteDataTable(OleDbConnection Connection, string CommandText, params OleDbParameter[] OleDbParameters)
129         {
130             DataTable Dt = null;
131             try
132             {
133                 OleDbCommand comm = CreateCommand(CommandText, Connection, OleDbParameters);
134                 OleDbDataAdapter da = new OleDbDataAdapter(comm);
135                 DataSet Ds = new DataSet();
136                 da.Fill(Ds);
137                 Dt = Ds.Tables[0];
138             }
139             catch (Exception)
140             {
141             }
142             finally
143             {
144                 if (Connection.State == ConnectionState.Open) Connection.Close();
145             }
146             return Dt;
147         }
148 
149         #endregion
150 
151         #region 表示一组数据命令和一个数据库连接,它们用于填充 DataSet 和更新数据源。
152         /// <summary>
153         /// 表示一组数据命令和一个数据库连接,它们用于填充 DataSet 和更新数据源。
154         /// </summary>
155         /// <param name="Connection">OleDbConnection对象</param>
156         /// <param name="CommandText">SQL语句</param>
157         /// <param name="OleDbParameters">OleDbParameter可选参数</param>
158         /// <returns></returns>
159         public static OleDbDataAdapter ExecuteDataAdapter(OleDbConnection Connection, string CommandText, params System.Data.OleDb.OleDbParameter[] OleDbParameters)
160         {
161             OleDbDataAdapter Da = null;
162             try
163             {
164                 OleDbCommand comm = CreateCommand(CommandText, Connection, OleDbParameters);
165                 Da = new OleDbDataAdapter(comm);
166                 OleDbCommandBuilder cb = new OleDbCommandBuilder(Da);
167             }
168             catch (Exception)
169             {
170             }
171             finally
172             {
173                 if (Connection.State == ConnectionState.Open) Connection.Close();
174             }
175             return Da;
176         }
177         #endregion
178 
179         #region 执行数据库语句返回受影响的行数,失败或异常返回-1[通常为:INSERT、DELETE、UPDATE 和 SET 语句等命令]。
180         /// <summary>
181         /// 执行数据库语句返回受影响的行数,失败或异常返回-1[通常为:INSERT、DELETE、UPDATE 和 SET 语句等命令]。
182         /// </summary>
183         /// <param name="Connection">OleDbConnection对象</param>
184         /// <param name="CommandText">SQL语句</param>
185         /// <param name="OleDbParameters">OleDbParameter可选参数</param>
186         /// <returns>受影响的行数</returns>
187         public static int ExecuteNonQuery(OleDbConnection Connection, string CommandText, params System.Data.OleDb.OleDbParameter[] OleDbParameters)
188         {
189             int i = -1;
190             try
191             {
192                 if (Connection.State == ConnectionState.Closed) Connection.Open();
193                 OleDbCommand comm = CreateCommand(CommandText, Connection, OleDbParameters);
194                 i = comm.ExecuteNonQuery();
195             }
196             catch (Exception)
197             {
198             }
199             finally
200             {
201                 if (Connection.State == ConnectionState.Open) Connection.Close();
202             }
203             return i;
204         }
205         #endregion
206 
207         #region 执行数据库语句返回第一行第一列,失败或异常返回null
208         /// <summary>
209         /// 执行数据库语句返回第一行第一列,失败或异常返回null
210         /// </summary>
211         /// <param name="Connection">OleDbConnection对象</param>
212         /// <param name="CommandText">SQL语句</param>
213         /// <param name="OleDbParameters">OleDbParameter可选参数</param>
214         /// <returns>第一行第一列的值</returns>
215         public static object ExecuteScalar(OleDbConnection Connection, string CommandText, params System.Data.OleDb.OleDbParameter[] OleDbParameters)
216         {
217             object Result = null;
218             try
219             {
220                 OleDbCommand comm = CreateCommand(CommandText, Connection, OleDbParameters);
221                 Result = comm.ExecuteScalar();
222             }
223             catch (Exception)
224             {
225             }
226             finally
227             {
228                 if (Connection.State == ConnectionState.Open) Connection.Close();
229             }
230             return Result;
231         }
232         #endregion
233 
234         #region 执行数据库语句返回一个自进结果集流
235         /// <summary>
236         /// 执行数据库语句返回一个自进结果集流
237         /// </summary>
238         /// <param name="Connection">OleDbConnection对象</param>
239         /// <param name="CommandText">SQL语句</param>
240         /// <param name="OleDbParameters">OleDbParameter可选参数</param>
241         /// <returns>DataReader对象</returns>
242         public static OleDbDataReader ExecuteDataReader(OleDbConnection Connection, string CommandText, params System.Data.OleDb.OleDbParameter[] OleDbParameters)
243         {
244             OleDbDataReader Odr = null;
245             try
246             {
247                 OleDbCommand comm = CreateCommand(CommandText, Connection, OleDbParameters);
248                 Odr = comm.ExecuteReader();
249             }
250             catch (Exception)
251             {
252             }
253             finally
254             {
255                 if (Connection.State == ConnectionState.Open) Connection.Close();
256             }
257             return Odr;
258         }
259         #endregion
260 
261         #region 获取Excel中的所有工作簿
262         /// <summary>
263         /// 获取Excel中的所有工作簿
264         /// </summary>
265         /// <param name="Connection">OleDbConnection对象</param>
266         /// <returns></returns>
267         public static DataTable GetWorkBookName(OleDbConnection Connection)
268         {
269             DataTable Dt = null;
270             try
271             {
272                 if (Connection.State == ConnectionState.Closed) Connection.Open();
273                 Dt = Connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
274             }
275             catch (Exception)
276             {
277             }
278             finally
279             {
280                 if (Connection.State == ConnectionState.Open) Connection.Close();
281             }
282             return Dt;
283         }
284         #endregion
285     }