Linux上的ASP.NET内核和EPPLUS库-索引超出范围异常:工作表位置超出范围

tct7dpnv  于 2023-03-07  发布在  Linux
关注(0)|答案(1)|浏览(328)

请注意,我已经找到了有关此问题的几个现有主题(EPPLUS IndexOutOfRangeException:工作表位置超出范围。),但没有一个仅特定于Linux发布。
我们有一个ASP.NET CORE 3.1网络项目与EPPlus 5.1.2库。
对于某些报表,我们打开一个预先存在的Excel模板(.xlsx),填充一些数据,然后返回给用户下载。在调试或将Web应用程序发布到Windows服务器时,一切都工作正常。
但是,如果我们发布到Linux服务器(Debian 10 64位),我们在尝试生成报告时会收到以下错误:

An unhandled exception occurred while processing the request.
IndexOutOfRangeException: Worksheet position out of range.

OfficeOpenXml.ExcelWorksheets.get_Item(int PositionID)

除此之外,其他一切似乎都工作正常(在Linux上)。
报表生成代码:

MemoryStream result;

FileInfo fileInfo = new FileInfo(Path.Combine(path, "template.xlsx"));
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

using (ExcelPackage xlPackage = new ExcelPackage(fileInfo))
{
    ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets[0];

    if (worksheet != null)
    {
        // fill some data ...
    }

    //return
    result = new MemoryStream(xlPackage.GetAsByteArray());
}

我的第一个想法是在Linux上发布.NET CORE时不支持EPPLUS ...?或者我们可以做一些不同的事情来让它工作?

qacovj5a

qacovj5a1#

问题不在于EPPLUS库,而在于Excel模板的文件/路径名的处理。Windows Server对文件/路径名不区分大小写,而Linux则是。
一旦我们的c#代码中的文件夹名称与Linux服务器上的实际文件夹名称(大小写)匹配,Excel导出就开始工作。

相关问题