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

(1)OleDB方式

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

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

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

读取代码如下:

string tableName)

   2: {
try
   4:     {
new DataTable();
//数据表
new DataSet();
//获取文件扩展名
string strExtension = System.IO.Path.GetExtension(strExcelPath);
string strFileName = System.IO.Path.GetFileName(strExcelPath);
//Excel的连接
null;
switch (strExtension)
  14:         {
:
);
break;
:
);
break;
default:
null;
break;
  24:         }
null)
  26:         {
null;
  28:         }
  29:         objConn.Open();
//获取Excel中所有Sheet表的信息
//System.Data.DataTable schemaTable = objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
//获取Excel的第一个Sheet表名
//string tableName = schemaTable.Rows[0][2].ToString().Trim();
;
//获取Excel指定Sheet表中的信息
new OleDbCommand(strSql, objConn);
new OleDbDataAdapter(strSql, objConn);
//填充数据
  39:         objConn.Close();
//dtExcel即为excel文件中指定表中存储的信息
  41:         dtExcel = ds.Tables[tableName];
return dtExcel;
  43:     }
catch
  45:     {
null;
  47:     }
  48: }