1. 程式人生 > >C#常用工具類——Excel操作類(ZT)

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

ada fin bject sta area exec public excel文件 站點

本文轉載於: 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 }

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