【问题标题】:How to get OleDb for reading excel in asp.net core project如何在 asp.net 核心项目中获取用于读取 excel 的 OleDb
【发布时间】:2016-11-05 12:41:39
【问题描述】:

有什么方法可以读取ASP.NET Core 中的 excel 数据(基于 .Net Core 构建)?我无法在我的 .net 核心项目的 project.json 中引用 OleDB。有没有其他方法可以做到这一点?

【问题讨论】:

    标签: excel asp.net-core oledb


    【解决方案1】:

    您今天真的需要 OleDB 来读取 Excel 吗?在我看来,OleDB 有点过时了。有一些开源库可以处理 Excel 文件,它们更易于使用并提供了很大的灵活性。

    ClosedXML (https://closedxml.codeplex.com/) 就是这样一个库。它有据可查,并允许使用自定义单元格样式格式读取和写入 Excel 文件。

    我也使用 OleDB 来读取非常大的 Excel 文件,它可以工作,但它存在某些问题,这里有一些问题:

    1. 您需要安装有时难以配置的 MS ACE OLEDB 提供程序。
    2. 您将不得不逐次读取 Excel 文件,而使用 ClosedXML 您可以通过 ID/地址随机访问行/单元格。
    3. OleDB 使用 Windows 注册表可配置设置来检查行数(默认为 8)以确定整列的数据类型,有时会出现问题,因为数据类型确定不正确。 ClosedXML 允许您为任何单元格设置特定的数据类型。

    我不是 ClosedXML 开发人员,所以这不是广告。正如我所提到的,我已经在我的项目中使用(并继续使用)OleDB 和 ClosedXML。使用 OleDB,我能够逐行或使用 SQL Server“SELECT * FROM OPENROWSET(...)”读取非常大的 Excel 文件(例如 400-800K+ 行)。 SQL Server 也可以使用相同的 ACE 提供程序直接写入 Excel 文件,它也适用于非常大的文件。

    但是,我使用 ClosedXML 读取/写入相对较小的文件,但它们使用了很多自定义格式。因此,如果您开始一个新项目,我建议您远离 OleDB。

    ClosedXML的唯一限制是它只支持压缩的XML Excel文件,即Excel 2007+版本。您可以在上面提到的 ClosedXML 站点上找到许多可以帮助您入门的示例。

    如果这有帮助,请告诉我。谢谢。

    【讨论】:

      【解决方案2】:

      正如andrews 所指出的,建议使用第三方库,尤其是在处理格式化时。 ClosedXML 的替代方法是 EPPlus。在我的大部分项目中,我使用了 ClosedXML,但我不得不切换到 EPPlus,因为它支持图表。

      对于 ASP.NET Core,您可以使用EPPlus.Core。我在 ASP.NET Core 2.0 控制台应用程序中进行了快速测试,它似乎工作正常:

      var newFile = new FileInfo("some file.xlsx");
      using (ExcelPackage xlPackage = new ExcelPackage(newFile))
      {
         var ws = xlPackage.Workbook.Worksheets.Add("etc");
         ws.Cells[1, 1].Value = "test";
      
         // do work here 
         xlPackage.Save();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-09-24
        • 2017-07-27
        • 2012-07-03
        相关资源
        最近更新 更多