gpt4 book ai didi

c# - EPPlus 导出模型到 Excel : System. NullReferenceException

转载 作者:行者123 更新时间:2023-11-30 16:07:16 24 4
gpt4 key购买 nike

我有一个正确显示模型的 MVC View 。现在我被要求在该页面上添加导出到 Excel 功能,我听说了 EPPlus 并尝试了一下。来自 this site我以为我有一些东西可以简单地完成这项工作。

根据我的需要进行更改后,我开发了这个。当我在 View 中测试功能时,它起作用了。我单击了 html 操作链接,Excel 文件已正确保存。

public void ExportToExcel(IEnumerable<FourCourseAudit> audit)
{
string pathUser = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
string pathDownload = Path.Combine(pathUser, "Documents");

FileInfo newFile = new FileInfo(pathDownload + "\\MyExport.xslx");

using (var excelFile = new ExcelPackage(newFile))
{
var worksheet = excelFile.Workbook.Worksheets.FirstOrDefault(x=>x.Name=="Sheet1");
if (worksheet == null)
{
worksheet.Workbook.Worksheets.Add("Sheet1");
}

worksheet.Cells["A1"].LoadFromCollection(Collection:audit, PrintHeaders:true);
excelFile.Save();
}
}

但是,当我发布网站并以普通用户身份对其进行测试时,我遇到了可怕的“Null Exception”错误:System.NullReferenceException: Object reference not set to an instance of an object.

可能的罪魁祸首是:

  • 空工作表
  • 空新文件
  • 空审计

这很令人费解,因为当我在 VS 的 Debug模式下运行它时它可以工作,但是当它在生产服务器上运行时出现空异常错误。

代码示例有什么明显的错误吗?

最佳答案

您不能(当然不应该)尝试从 Web 应用程序直接保存到用户的文件系统。

我怀疑您的空引用位于 Environment.SpecialFolders... 对象中的某处。

最好将文件作为字节数组返回给 Controller 操作中的响应。这样用户就可以选择将文件保存在他们自己的文件系统中。像这样的东西应该可以解决问题:

public ActionResult ExportToExcel(IEnumerable<FourCourseAudit> audit)
{
byte[] response;
using (var excelFile = new ExcelPackage())
{
var worksheet = excelFile.Workbook.Worksheets.Add("Sheet1");
worksheet.Cells["A1"].LoadFromCollection(Collection:audit,PrintHeaders:true);
response = excelFile.GetAsByteArray();
}
return File(response, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Export.xlsx");
}

关于c# - EPPlus 导出模型到 Excel : System. NullReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30946987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com