这篇文章说明了如何使用 EPPlus 在 ASP.NET Core 中导入和导出. xls/.xlsx 文件 (Excel). 在考虑使用. NET 处理 Excel 时, 我们总是寻找第三方库或组件. 使用 Open Office xml 格式(xlsx) 读取和写入 Excel 2007/2010 文件的最流行的. net 库之一是 EPPlus http://epplus.codeplex.com/ . 这个库现在已经支持. NET Core 许久了. 这适用于 Windows,Linux 和 Mac.
因此, 让我们创建一个新的 ASP.NET Core web API 应用程序并安装 EPPlus.Core. 要安装 EPPlus.Core, 请在程序包管理器控制台中运行以下命令:
PM->Install-Package EPPlus.Core
或者您可以通过 UI 界面来安装它.
一切就绪, 现在创建一个控制器, 命名为: ImportExportController , 添加后, 让我们编写导出方法.
为了方便演示, 我在 wwwroot 文件夹中创建了一个 Excel 文件, 所以我们就需要去获取我们的项目的绝对路径.
- public class ImportExportController : ControllerBase
- {
- private readonly IHostingEnvironment _hostingEnvironment;
- public ImportExportController(IHostingEnvironment hostingEnvironment)
- {
- _hostingEnvironment = hostingEnvironment;
- }
- }
ExcelPackage 在 OfficeOpenXml 命名空间中可用的类将用于读写 xlsx. 定义名为 "Export" 的新 Web API 操作方法, 该方法返回生成的 xlsx 文件的 URL. 所以这是将数据导出到 xlsx 的完整代码. 其中您需要 using OfficeOpenXml;
[HttpGet] public string Export() { string sWebRootFolder = _hostingEnvironment.WebRootPath; string sFileName = @"demo.xlsx"; string URL = string.Format("{0}://{1}/{2}", Request.Scheme, Request.Host, sFileName); FileInfo file = new FileInfo(Path.Combine(sWebRootFolder, sFileName)); if (file.Exists) { file.Delete(); file = new FileInfo(Path.Combine(sWebRootFolder, sFileName)); } using (ExcelPackage package = new ExcelPackage(file)) { // add a new worksheet to the empty workbook ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Employee"); //First add the headers worksheet.Cells[1, 1].Value = "ID"; worksheet.Cells[1, 2].Value = "Name"; worksheet.Cells[1, 3].Value = "Gender"; worksheet.Cells[1, 4].Value = "Salary (in $)"; //Add values worksheet.Cells["A2"].Value = 1000; worksheet.Cells["B2"].Value = "Jon"; worksheet.Cells["C2"].Value = "M"; worksheet.Cells["D2"].Value = 5000; worksheet.Cells["A3"].Value = 1001; worksheet.Cells["B3"].Value = "Graham"; worksheet.Cells["C3"].Value = "M"; worksheet.Cells["D3"].Value = 10000; worksheet.Cells["A4"].Value = 1002; worksheet.Cells["B4"].Value = "Jenny"; worksheet.Cells["C4"].Value = "F"; worksheet.Cells["D4"].Value = 5000; package.Save(); //Save the workbook. } return URL; }
就这样. 现在, 当您运行此应用程序并调用 export 方法时. 完成后, 访问 wwwroot 您的应用程序的文件夹. 您应该在系统上看到 "demo.xlsx". 当你打开它时, 你应该看到以下内容.
您还可以对标题进行加粗, 这些并不是 EPPlus.Core 给我们提供的, 你需要引用 usingOfficeOpenXml;using OfficeOpenXml.Style;
using (var cells = worksheet.Cells[1, 1, 1, 4]) { cells.Style.Font.Bold = true; cells.Style.Fill.PatternType = ExcelFillStyle.Solid; cells.Style.Fill.BackgroundColor.SetColor(Color.LightGray); }
关于导入, 其实真实的情况还是比较复杂的, 我们这里就不进行验证了, 对于演示, 我们只是读取刚刚保存的文件. ImportAPI 将读取文件并以格式化的字符串返回文件内容. 以下是导入 API 的完整代码, 用于读取 xlsx, 创建文件内容的格式化字符串并返回相同的内容.
[HttpGet] [Route("Import")] public string Import() { string sWebRootFolder = _hostingEnvironment.WebRootPath; string sFileName = @"demo.xlsx"; FileInfo file = new FileInfo(Path.Combine(sWebRootFolder, sFileName)); try { using (ExcelPackage package = new ExcelPackage(file)) { StringBuilder sb = new StringBuilder(); ExcelWorksheet worksheet = package.Workbook.Worksheets[1]; int rowCount = worksheet.Dimension.Rows; int ColCount = worksheet.Dimension.Columns; bool bHeaderRow = true; for (int row = 1; row <= rowCount; row++) { for (int col = 1; col <= ColCount; col++) { if (bHeaderRow) { sb.Append(worksheet.Cells[row, col].Value.ToString() + "\t"); } else { sb.Append(worksheet.Cells[row, col].Value.ToString() + "\t"); } } sb.Append(Environment.NewLine); } return sb.ToString(); } } catch (Exception ex) { return "Some error occured while importing." + ex.Message; } }
希望可以帮助到你.
来源: https://www.cnblogs.com/ZaraNet/p/10421782.html