[C#] ExcelTools工具类 →→→→→进入此内容的聊天室

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

回复 "ExcelTools工具类"

这儿你可以回复上面这条便签

captcha