如何将大型Excel文件导入到数据表?

我有一个500列的Excel文件。 我正在使用OLEDB将其导入到DataTable中。 但是DataTable只包含前255列。 我无法弄清楚为什么其余的列没有被导入。

我的代码是

public DataTable ToDataTable() { DataSet dsEmpMaster = new DataSet(); DataTable dtEmpMaster = null; string strConnectionString; string strSql; string FileNameWithPath = String.Format("{0}\\{1}", System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName), _FileName); try { dtEmpMaster = new DataTable(); strConnectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0;", FileNameWithPath); strSql = String.Format("SELECT * FROM [{0}$]", _SheetName); OleDbDataAdapter adpMasterData = new OleDbDataAdapter(strSql, strConnectionString); adpMasterData.Fill(dsEmpMaster); dtEmpMaster = dsEmpMaster.Tables[0]; adpMasterData.Dispose(); } catch (Exception ex) { _ExcelError = ex.Message; } 

OLEDB不能支持> 256列,请参阅此解决方法。

  var file_path = @"D:\doc\excel.xlsx"; Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass(); // Disabling messageboxes to prevent losing control on Excel app xlApp.DisplayAlerts = false; Microsoft.Office.Interop.Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(file_path, 0, false, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); xlWorkBook.DoNotPromptForConvert = true; for (var k = 1; k <= xlWorkBook.Worksheets.Count; k++) { Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet) this.xlWorkBook.Worksheets.get_Item(k); int cCnt = xlWorkSheet.Cells.Count; // processing all cells used, but can call named ranges Microsoft.Office.Interop.Excel.Range range = xlWorkSheet.UsedRange; for (var rCnt = 1; rCnt <= range.Rows.Count; rCnt++) { for (cCnt = 1; cCnt <= range.Columns.Count; cCnt++) { Microsoft.Office.Interop.Excel.Range rng = (Microsoft.Office.Interop.Excel.Range) range.Cells[rCnt, cCnt]; // do something with range } } } 

但正如在这个线程中提到的Interop可能对您的需求太慢,我个人还没有使用它,但它可能是值得看像ExcelDataReader

编辑:正在修复链接代码的格式