首页 > 代码库 > C#常用工具类——Excel操作类(ZT)
C#常用工具类——Excel操作类(ZT)
本文转载于: 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 try102 {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 finally112 {113 if (Connection.State == ConnectionState.Open) Connection.Close();114 }115 116 return ds;117 }118 #endregion119 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 try132 {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 finally143 {144 if (Connection.State == ConnectionState.Open) Connection.Close();145 }146 return Dt;147 }148 149 #endregion150 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 try163 {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 finally172 {173 if (Connection.State == ConnectionState.Open) Connection.Close();174 }175 return Da;176 }177 #endregion178 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 try191 {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 finally200 {201 if (Connection.State == ConnectionState.Open) Connection.Close();202 }203 return i;204 }205 #endregion206 207 #region 执行数据库语句返回第一行第一列,失败或异常返回null208 /// <summary>209 /// 执行数据库语句返回第一行第一列,失败或异常返回null210 /// </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 try219 {220 OleDbCommand comm = CreateCommand(CommandText, Connection, OleDbParameters);221 Result = comm.ExecuteScalar();222 }223 catch (Exception)224 {225 }226 finally227 {228 if (Connection.State == ConnectionState.Open) Connection.Close();229 }230 return Result;231 }232 #endregion233 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 try246 {247 OleDbCommand comm = CreateCommand(CommandText, Connection, OleDbParameters);248 Odr = comm.ExecuteReader();249 }250 catch (Exception)251 {252 }253 finally254 {255 if (Connection.State == ConnectionState.Open) Connection.Close();256 }257 return Odr;258 }259 #endregion260 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 try271 {272 if (Connection.State == ConnectionState.Closed) Connection.Open();273 Dt = Connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);274 }275 catch (Exception)276 {277 }278 finally279 {280 if (Connection.State == ConnectionState.Open) Connection.Close();281 }282 return Dt;283 }284 #endregion285 }
C#常用工具类——Excel操作类(ZT)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。