阅读asp.net核心1.0上的excel文件

你好我正尝试上传和阅读我的asp.net项目的excel文件,但所有我find的文档是ASP MVC 5.我的目标是阅读Excel表,并将值传递给对象列表。

这是我的控制器,它将file upload到我的wwwroot / uploads

public class HomeController : Controller { private IHostingEnvironment _environment; public HomeController(IHostingEnvironment environment) { _environment = environment; } public IActionResult index() { return View(); } [HttpPost] public async Task<IActionResult> Index(ICollection<IFormFile> files) { var uploads = Path.Combine(_environment.WebRootPath, "uploads"); foreach (var file in files) { if (file.Length > 0) { using (var fileStream = new FileStream(Path.Combine(uploads, file.FileName), FileMode.Create)) { await file.CopyToAsync(fileStream); } } } return View(); } 

在.NET核心OleDb和DataTables已经消失。 这使得一些项目难以将自己移植到netcore。

如果您正在阅读OpenXml Excel文件(xlsx),非官方的Epplus.Core可以帮助您。

但是对于97 – 03年的老版本(xls),我们还找不到解决scheme。

我希望今年晚些时候NPOI或者ExcelDataReader能够获得一个核心版本,但是在这个方向上我看不到太多的活动。

在Visual Studio中打开包pipe理器控制台 ,然后键入:

 PM> Install-Package EPPlus.Core 

写文件就像这样简单:

 public void WriteExcel(string fileName) { FileInfo file = new FileInfo(fileName); /// overwrite old file if (file.Exists) { file.Delete(); file = new FileInfo(fileName); } using (ExcelPackage package = new ExcelPackage(file)) { // add a new worksheet to the empty workbook ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Employee"); worksheet.Cells["A1"].Value = "HELLO WORLD!!!"; package.Save(); } } 

更多示例: http : //www.talkingdotnet.com/import-export-xlsx-asp-net-core/

正如在一些评论和答案中所述,有一个非官方的EPPlus端口.Net核心(我现在已经试过,它支持核心1.0,1.1和2.0)…

这段代码演示了如何做到这一点

 var filePath = @"D:/test.xlsx"; FileInfo file = new FileInfo(filePath); using (ExcelPackage package = new ExcelPackage(file)) { ExcelWorksheet worksheet = package.Workbook.Worksheets[1]; int rowCount = worksheet.Dimension.Rows; int ColCount = worksheet.Dimension.Columns; var rawText = string.Empty; for (int row = 1; row <= rowCount; row++) { for (int col = 1; col <= ColCount; col++) { // This is just for demo purposes rawText += worksheet.Cells[row, col].Value.ToString() + "\t"; } rawText+="\r\n"; } _logger.LogInformation(rawText); } 

注:今天我在工作中使用,我创build了一个字典mathing列名列名直接访问每列,给定的名称,逐行,性能要比使用一些其他库旨在读取CSV文件。

几个链接:
– EPPlus.Core: https : //github.com/VahidN/EPPlus.Core
– 一个具体的例子: https : //www.codeproject.com/Articles/1217036/Console-Logging-and-Reading-Excel-Files-with-NET-C

我希望它有帮助,

胡安

在大多数情况下,如果您使用ASP.NET 4或ASP.NET Core来读取Excel文件,则无关紧要。 你只需要find一个允许这样做的库。 build议使用NuGet将这些库添加到您的项目中。

请参阅如何在这里安装NuGet包的说明: https : //docs.nuget.org/ndocs/guides/install-nuget

我可以推荐使用的一个库是EPPlus( https://www.nuget.org/packages/EPPlus )。

当您完成file upload并将Excel文件存储在某处时,只需使用EPPlus将其打开即可阅读。 简单的例子如下:

 var package = new ExcelPackage(new FileInfo("sample.xlsx")); ExcelWorksheet workSheet = package.Workbook.Worksheets[0]; for (int i = workSheet.Dimension.Start.Column; i <= workSheet.Dimension.End.Column; i++) { for (int j = workSheet.Dimension.Start.Row; j <= workSheet.Dimension.End.Row; j++) { object cellValue = workSheet.Cells[i, j].Value; } }