读取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") };