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

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

优点:能够非常灵活的读取Excel中的数据,用户可以灵活的调用各种函数进行处理。

缺点:基于单元格的处理,读取速度较慢,对于数据量较大的文件最好不要使用此种方式读取。

需要添加相应的DLL引用,必须存在此引用才可使用,如果是Web站点部署在IIS上时,还需要服务器机子已安装了Excel,有时候还需要为配置IIS权限。

读取代码如下:

 

 
  1. private Stopwatch wath = new Stopwatch();  /// <summary> 
  2. /// 使用COM读取Excel  /// </summary> 
  3. /// <param name="excelFilePath">路径</param>  /// <returns>DataTabel</returns> 
  4. public System.Data.DataTable GetExcelData(string excelFilePath)  { 
  5. Excel.Application app = new Excel.Application();  Excel.Sheets sheets; 
  6. Excel.Workbook workbook = null;  object oMissiong = System.Reflection.Missing.Value; 
  7. System.Data.DataTable dt = new System.Data.DataTable();  wath.Start(); 
  8. try  { 
  9. if (app == null)  { 
  10. return null;  } 
  11. workbook = app.Workbooks.Open(excelFilePath, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong,   oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong, oMissiong); 
  12. //将数据读入到DataTable中——Start   sheets = workbook.Worksheets; 
  13. Excel.Worksheet worksheet = (Excel.Worksheet)sheets.get_Item(1);//读取第一张表  if (worksheet == null) 
  14. return null;  string cellContent; 
  15. int iRowCount = worksheet.UsedRange.Rows.Count;  int iColCount = worksheet.UsedRange.Columns.Count; 
  16. Excel.Range range;  //负责列头Start 
  17. DataColumn dc;  int ColumnID = 1; 
  18. range = (Excel.Range)worksheet.Cells[1, 1];  while (range.Text.ToString().Trim() != "") 
  19. {  dc = new DataColumn(); 
  20. dc.DataType = System.Type.GetType("System.String");  dc.ColumnName = range.Text.ToString().Trim();