读取Excel文件

我正在写一些代码来读取一个Excel文件,但不幸的是,Excel文件包含超过300列,我需要阅读所有300。

我一直在使用一些第三部分库来完成这个LinqToExcel,但是他们最多只能读取256列

var excel = new ExcelQueryFactory(FileName); var recs = (from ws in excel.Worksheet<Sample>("data export final") select ws).ToList() 

有谁知道我怎么可以读取所有300列,最好不必安装Microst Office,因为这将运行在没有安装的服务器上

EPPlus可以读写> 256列。 这是一个简短的例子,显示写入列300。

 FileInfo newFile = new FileInfo(@"C:\Temp\sample300.xlsx"); if (newFile.Exists) { newFile.Delete(); // ensures we create a new workbook newFile = new FileInfo(@"C:\Temp\sample300.xlsx"); } using (ExcelPackage package = new ExcelPackage(newFile)) { // add a new worksheet to the empty workbook ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Inventory"); //Add the headers worksheet.Cells[1, 1].Value = "ID"; worksheet.Cells[1, 300].Value = "Col 300"; package.Save(); } 

从列300+读取是一样容易,但发布一个自包含的示例,其中包括一个大的input文件更难:-)

有几个选项 – 都涉及一些额外的库:

OpenXML 2.0(来自MS的免费库)可以用来读取/修改.xlsx的内容,所以你可以用它做你想要的

一些(商业)第三方库提供了网格控件,使您可以像使用SpreadsheetGear,Aspose.Cells等一样在应用程序中使用excel文件(比如Winforms / WPF / ASP.NET …)

你可以尝试这个基于OleDbDataAdapter的代码

  string filename = @"....xls"; string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filename + ";" + "Extended Properties=Excel 8.0;"; OleDbDataAdapter dataAdapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString); DataSet myDataSet = new DataSet(); dataAdapter.Fill(myDataSet, "Sample"); DataTable dataTable = myDataSet.Tables["Sample"]; var rows = from p in dataTable.AsEnumerable() select new { Property = p.Field<string>("Column") };