using Microsoft.AspNetCore.Http;
using OfficeOpenXml;
using System.IO;
public IActionResult ImportExcel(IFormFile file)
{
using (var stream = new MemoryStream())
{
// 将上传的文件复制到内存流
file.CopyToAsync(stream);
using (var package = new ExcelPackage(stream))
{
var worksheet = package.Workbook.Worksheets[0];
// 处理 Excel 文件中的数据
// ...
}
}
return Ok();
}
EPPlus 库是可以打开 wps 创建的表格的,不过需要注意一个问题:wps 表格可能使用 GBK 编码,而 EPPlus 库默认使用 UTF-8 编码,如果不做处理,可能会出现中文乱码的问题。 解决这个问题的方法是在打开 Excel 文件之前,将字节数组转换为字符串时指定 GBK 编码,如下所示:
csharp
using (var package = new ExcelPackage(new MemoryStream(bytes, false)))
{
// 将使用 GBK 编码打开 Excel 文件
package.Workbook.Calculate();
// ...
}
报错:Please set the ExcelPackage.LicenseContext property.
原因:这个错误是因为在使用 EPPlus 库时未设置 `ExcelPackage.LicenseContext` 属性引起的。从 EPPlus 5.4.0 开始,它要求设置此属性,以确定是使用 EPPlus 的自由开源版本还是商业版。 要解决这个问题,你可以在代码中显式设置 `LicenseContext` 的值,如下所示:
在上面的代码中,我们将 `LicenseContext` 属性设置为 `LicenseContext.NonCommercial`,以避免出现这个错误。如果你使用的是商业版,可以将其设置为 `LicenseContext.Commercial`。 请注意,**你需要在使用 EPPlus 库之前设置 `LicenseContext` 属性**,以避免出现错误。建议在程序的启动代码中设置此属性。
具体可以参考这篇文章