C#读取Excel的三种方式以及比较分析

2019-12-30 11:04:22王冬梅

易采站长站为您分析C#读取Excel的三种方式以及比较分析,需要的朋友可以参考下

(1)OleDB方式

优点:将Excel直接当做数据源处理,通过SQL直接读取内容,读取速度较快。

缺点:读取数据方式不够灵活,无法直接读取某一个单元格,只有将整个Sheet页读取出来后(结果为Datatable)再在Datatable中根据行列数来获取指定的值。

当Excel数据量很大时。会非常占用内存,当内存不够时会抛出内存溢出的异常。

读取代码如下:

 

 
  1. public DataTable GetExcelTableByOleDB(string strExcelPath, string tableName)  { 
  2. try  { 
  3. DataTable dtExcel = new DataTable();  //数据表 
  4. DataSet ds = new DataSet();  //获取文件扩展名 
  5. string strExtension = System.IO.Path.GetExtension(strExcelPath);  string strFileName = System.IO.Path.GetFileName(strExcelPath); 
  6. //Excel的连接  OleDbConnection objConn = null; 
  7. switch (strExtension)  { 
  8. case ".xls":  objConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strExcelPath + ";" + "Extended Properties="Excel 8.0;HDR=NO;IMEX=1;""); 
  9. break;  case ".xlsx": 
  10. objConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strExcelPath + ";" + "Extended Properties="Excel 12.0;HDR=NO;IMEX=1;"");  break; 
  11. default:  objConn = null; 
  12. break;  } 
  13. if (objConn == null)  { 
  14. return null;  } 
  15. objConn.Open();  //获取Excel中所有Sheet表的信息 
  16. //System.Data.DataTable schemaTable = objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);  //获取Excel的第一个Sheet表名 
  17. //string tableName = schemaTable.Rows[0][2].ToString().Trim();  string strSql = "select * from [" + tableName + "]"; 
  18. //获取Excel指定Sheet表中的信息  OleDbCommand objCmd = new OleDbCommand(strSql, objConn);