如何获得OleDb在asp.net核心项目中阅读excel

有没有什么方法可以读取ASP.NET Core (内置.Net Core)中的excel数据? 我无法在我的.net核心项目的project.json中引用OleDB 。 还有其他的方法吗?

你真的需要OleDB今天读Excel吗? 在我看来,OleDB有点过时了。 有开源的库来处理Excel文件,使用起来更容易,并提供了很大的灵活性。

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

我已经使用OleDB来读取非常大的Excel文件,它的工作原理,但也有一些问题,这里有一些我的头顶:

  1. 您将需要安装有时很难configuration的MS ACE OLEDB提供程序。
  2. 您将不得不通过使用ClosedXML读通过Excel文件,您可以通过ID /地址随机访问行/单元格。
  3. OleDB使用Windowsregistry可configuration设置来检查行数(缺省值是8),以确定整个列的数据types,有时会出现问题,因为数据types被错误地确定。 ClosedXML允许您为任何单元格设置特定的数据types。

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

但是,ClosedXML我用于读/写相对较小的文件,但他们使用了很多自定义格式。 所以,如果你开始一个新的项目,我会build议离开OleDB。

ClosedXML的唯一限制是它只支持压缩的XML Excel文件,即Excel版本2007+ 。 你可以在上面提到的ClosedXML网站上find很多的例子来帮助你开始。

让我知道这是否有帮助。 谢谢。

andrews ,build议使用第三方库,尤其是使用格式化时。 ClosedXML的替代scheme是EPPlus 。 对于我的大部分项目,我都使用了ClosedXML,但是我不得不切换到EPPlus,因为它支持图表。

对于ASP.NET Core,可以使用EPPlus.Core 。 我已经在ASP.NET Core 2.0控制台应用程序中执行了一个快速testing,它似乎工作正常:

 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(); }