我正在编写一些代码来读取excel文件,但不幸的是excel文件包含300多列,我需要阅读所有300个。
我一直在使用某些第3部分库来执行此操作LinqToExcel,但他们只能读取最多256列
var excel = new ExcelQueryFactory(FileName);
var recs = (from ws in excel.Worksheet<Sample>("data export final")
select ws).ToList()
有没有人知道如何阅读所有300列,最好不必安装Microst Office,因为这将在没有安装的服务器上运行
答案 0 :(得分:3)
EPPlus可以读写&gt; 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列开始阅读也同样容易,但发布一个包含大量输入文件的自包含示例更难: - )
答案 1 :(得分:2)
有几个选项 - 都涉及一些额外的库:
OpenXML 2.0(来自MS的免费库)可用于读取/修改.xlsx的内容,以便您可以根据需要使用它。
一些(商业)第三方库带有网格控件,允许您在应用程序中使用excel文件(可以是Winforms / WPF / ASP.NET ...),如SpreadsheetGear,Aspose.Cells等。< / p>
答案 2 :(得分:0)
您可以尝试使用基于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")
};