我正在使用EPPLus在Visual Studio 2017中构建Excel报表,我的一个要求是将与特定ID链接的所有数字附加到单个字段,但是当我尝试时,我收到以下错误:
“Excel在'[filenameHere.xlsx]'中找到了不可读的内容 . 是否要恢复此工作簿的内容?如果您信任此工作簿的来源,请单击是”
当我这样做时,它会返回另一个信息框,指出:
“Excel能够通过修复或删除不可读的内容来打开文件 . 修复记录:来自/xl/sharedString.xml部分(字符串)的字符串属性”,它提供了一个指向日志文件的链接:
“
error178480_01.xml在文件'C中检测到错误:[filenamehere] .xlsx'Repaired Records:来自/xl/sharedStrings.xml部分的字符串属性(字符串)“我向该字段提取了大约3,000条记录,但只显示了大约1800条记录我运行代码,信息被截断 . 这是一个例子:
StringBuilder groupString = new StringBuilder();
for (int i = 0; i <= 3000;i++)
{
groupString.Append("sampleNumber "+i.ToString()+",");
}
ExcelPackage exclPck = new ExcelPackage();
ExcelWorksheet exclWs = exclPck.Workbook.Worksheets.Add("example");
exclWs.Cells["A2"].Value= groupString.ToString();
exclPck.SaveAs(new System.IO.FileInfo("C:\\filenamehere.xlsx"));
1 回答
这里的问题在于Excel每个单元格的字符数限制为32,767个字符 . 在返回3000个数字时(如果它们与“samplenumber0000”或17个字符的长度相同),您将能够返回每个单元格大约1700个左右的记录 . 通过将其分成单独的单元格,您可以通过将结果分割以适应字符限制来修复它 . 这是我如何使Excel表现的一个例子:
作为数据卫生的一般规则,我建议将这些类型的结果拆分到他们自己的附加工作簿中,如果你要撤回这个数量的结果,那么你应该利用excel更宽容的总行数限制(1,048,576)并将这些结果分开以获得更好的可读性 .