【发布时间】:2016-11-05 12:41:39
【问题描述】:
有什么方法可以读取ASP.NET Core 中的 excel 数据(基于 .Net Core 构建)?我无法在我的 .net 核心项目的 project.json 中引用 OleDB。有没有其他方法可以做到这一点?
【问题讨论】:
标签: excel asp.net-core oledb
有什么方法可以读取ASP.NET Core 中的 excel 数据(基于 .Net Core 构建)?我无法在我的 .net 核心项目的 project.json 中引用 OleDB。有没有其他方法可以做到这一点?
【问题讨论】:
标签: excel asp.net-core oledb
您今天真的需要 OleDB 来读取 Excel 吗?在我看来,OleDB 有点过时了。有一些开源库可以处理 Excel 文件,它们更易于使用并提供了很大的灵活性。
ClosedXML (https://closedxml.codeplex.com/) 就是这样一个库。它有据可查,并允许使用自定义单元格样式格式读取和写入 Excel 文件。
我也使用 OleDB 来读取非常大的 Excel 文件,它可以工作,但它存在某些问题,这里有一些问题:
我不是 ClosedXML 开发人员,所以这不是广告。正如我所提到的,我已经在我的项目中使用(并继续使用)OleDB 和 ClosedXML。使用 OleDB,我能够逐行或使用 SQL Server“SELECT * FROM OPENROWSET(...)”读取非常大的 Excel 文件(例如 400-800K+ 行)。 SQL Server 也可以使用相同的 ACE 提供程序直接写入 Excel 文件,它也适用于非常大的文件。
但是,我使用 ClosedXML 读取/写入相对较小的文件,但它们使用了很多自定义格式。因此,如果您开始一个新项目,我建议您远离 OleDB。
ClosedXML的唯一限制是它只支持压缩的XML Excel文件,即Excel 2007+版本。您可以在上面提到的 ClosedXML 站点上找到许多可以帮助您入门的示例。
如果这有帮助,请告诉我。谢谢。
【讨论】:
正如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();
}
【讨论】: