如何解决我们在“example.xlsx”中发现了一些内容的问题——使用了 ClosedXML 库
我正在使用 ClosedXML 库生成一个包含 2 个工作表的简单 Excel 文件。
每当我尝试打开文件时,我总是收到错误消息说 “我们发现“example.xlsx”中的某些内容存在问题。您是否希望我们尝试尽可能多地恢复。如果您信任此工作簿的来源,请单击“是”
如果我单击是,它会按预期显示数据,但我看不到任何数据 它的问题。此外,如果我只生成 1 个工作表,则此错误会 没有出现。
这是我的存储过程返回的内容,第一个结果集填充在 sheet1 中,第二个结果集填充在 sheet2 中,这按预期工作。 Workbook data
这是我正在使用的方法,它返回 2 个结果集并将两个结果集填充到 2 个不同的工作表中:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult POAReport(POAReportVM model)
{
POAReportVM poaReportVM = reportService.GetPOAReport(model);
using (var workbook = new XLWorkbook())
{
IXLWorksheet worksheet1 = workbook.Worksheets.Add("ProductOrderAccuracy");
worksheet1.Cell("A1").Value = "DATE";
worksheet1.Cell("B1").Value = "ORDER";
worksheet1.Cell("C1").Value = "";
var countsheet1 = 2;
for (int i = 0; i < poaReportVM.productOrderAccuracyList.Count; i++)
{
worksheet1.Cell(countsheet1,1).Value = poaReportVM.productOrderAccuracyList[i].CompletedDate.ToString();
worksheet1.Cell(countsheet1,2).Value = poaReportVM.productOrderAccuracyList[i].WebOrderID.ToString();
worksheet1.Cell(countsheet1,3).Value = poaReportVM.productOrderAccuracyList[i].Completedindicator;
countsheet1++;
}
IXLWorksheet worksheet2 = workbook.Worksheets.Add("Summary");
worksheet2.Cell("A1").Value = "Total Orders Sampled";
worksheet2.Cell("B1").Value = "Passed";
worksheet2.Cell("C1").Value = "% Passed";
worksheet2.Cell(2,1).Value = poaReportVM.summaryVM.TotalOrdeRSSampled.ToString();
worksheet2.Cell(2,2).Value = poaReportVM.summaryVM.Passed.ToString();
worksheet2.Cell(2,3).Value = poaReportVM.summaryVM.PassedPercentage.ToString();
//save file to memory stream and return it as byte array
using (var ms = new MemoryStream())
{
workbook.SaveAs(ms);
ms.Position = 0;
var content = ms.ToArray();
return File(content,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
}
}
}
解决方法
我遇到了类似的问题。对我来说,原因是mentioned in this answer:
我在使用 EPPlus 自定义现有模板时遇到了这个问题。对我来说,问题出在模板本身,因为它包含对查找表的无效引用。我在公式 -> 名称管理器中找到了这个。
您可以在那里找到其他解决方案。
抱歉,我的声誉太低,无法添加评论。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。