阅读Excel文件

时间:2012-08-30 16:07:23

标签: c# excel oledb

我正在编写一些代码来读取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,因为这将在没有安装的服务器上运行

3 个答案:

答案 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")
                       };