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

2019-12-30 11:04:22王冬梅
  • SheetOptions sheet2thread = new SheetOptions(worksheet, iColCount, b2 + 2, b2 * 2 + 1, dt2);  Thread othread2 = new Thread(new ThreadStart(sheet2thread.SheetToDataTable)); 
  • othread2.Start();  DataTable dt3 = new DataTable("dt3"); 
  • dt3 = dt.Clone();  SheetOptions sheet3thread = new SheetOptions(worksheet, iColCount, b2 * 2 + 2, b2 * 3 + 1, dt3); 
  • Thread othread3 = new Thread(new ThreadStart(sheet3thread.SheetToDataTable));  othread3.Start(); 
  • DataTable dt4 = new DataTable("dt4");  dt4 = dt.Clone(); 
  • SheetOptions sheet4thread = new SheetOptions(worksheet, iColCount, b2 * 3 + 2, b2 * 4 + 1, dt4);  Thread othread4 = new Thread(new ThreadStart(sheet4thread.SheetToDataTable)); 
  • othread4.Start();  //主线程读取剩余数据 
  • for (int iRow = b2 * 4 + 2; iRow <= iRowCount; iRow++)  { 
  • DataRow dr = dt.NewRow();  for (int iCol = 1; iCol <= iColCount; iCol++) 
  • {  range = (Excel.Range)worksheet.Cells[iRow, iCol]; 
  • cellContent = (range.Value2 == null) ? "" : range.Text.ToString();  dr[iCol - 1] = cellContent; 
  • }  dt.Rows.Add(dr); 
  • }  othread1.Join(); 
  • othread2.Join();  othread3.Join(); 
  • othread4.Join();  //将多个线程读取出来的数据追加至 dt1 后面 
  • foreach (DataRow dr in dt.Rows)  dt1.Rows.Add(dr.ItemArray); 
  • dt.Clear();  dt.Dispose(); 
  • foreach (DataRow dr in dt2.Rows)  dt1.Rows.Add(dr.ItemArray); 
  • dt2.Clear();  dt2.Dispose(); 
  • foreach (DataRow dr in dt3.Rows)  dt1.Rows.Add(dr.ItemArray); 
  • dt3.Clear();  dt3.Dispose(); 
  • foreach (DataRow dr in dt4.Rows)  dt1.Rows.Add(dr.ItemArray); 
  • dt4.Clear();  dt4.Dispose();