C# EPPlus 创建多个选项卡导致空引用异常

C# EPPlus create many tabs causes a null reference exception

我在使用 EPPlus 库生成 Excel 文件时发现了一个奇怪的错误。场景很简单——我需要在一个 excel 文件中包含多个工作表。但是,在调用 GetAsByteArray() 方法时,我得到 null reference exception

using (ExcelPackage xml = new ExcelPackage())
{
    foreach (var mainValueItem in values)
    {
        using (ExcelWorksheet worksheet = xml.Workbook.Worksheets.Add($"sheet {mainValueItem.ID}"))
        {
            worksheet.Cells[1, 1].Value = "Date";
        }
    }
    return ctr.File(xml.GetAsByteArray(), MediaTypeNames.Application.Octet);
}

我可以在两个工作表中看到,单元格 属性 未加载,如您在此处所见:

那么,如何创建多个工作表?

我找到了答案 - 我们不应该使用

using (ExcelWorksheet worksheet = xml.Workbook.Worksheets.Add($"sheet {mainValueItem.ID}"))

在那种情况下。相反,只需声明一个变量

var worksheet = xml.Workbook.Worksheets.Add($"sheet {mainValueItem.ID}");

现在可以了,我可以在生成的文件中看到多个选项卡。

编码愉快!