[英]Excel Found Unreadable Content - Recover Truncates
我正在使用EPPLus在Visual Studio 2017中構建Excel報表,我的要求之一是將與某個ID鏈接的所有數字附加到單個字段,但是當我嘗試時出現以下錯誤:
“ Excel在'[filenameHere.xlsx]'中發現了不可讀的內容。是否要恢復此工作簿的內容?如果您信任此工作簿的來源,請單擊“是”。
當我這樣做時,它將返回另一個信息框,指出:
“ Excel能夠通過修復或刪除不可讀的內容來打開文件。修復的記錄:/xl/sharedString.xml部分的String屬性(字符串)”,它提供了指向日志文件的鏈接,其內容為:
“
error178480_01.xml在文件'C:[filenamehere] .xlsx'中檢測到錯誤。修復的記錄:/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"));
這里的問題在於,Excel每個單元格的字符數限制為32,767個字符。 如果返回3000個數字(如果長度與“ samplenumber0000”或17個字符相同),則每個單元格可以返回大約1700條記錄。 通過將其分成一個單獨的單元格,您可以通過將結果划分成適合字符數的限制來修復它。 這是我如何使Excel表現的示例:
ExcelPackage exclPck = new ExcelPackage();
ExcelWorksheet exclWs = exclPck.Workbook.Worksheets.Add("example");
StringBuilder groupString = new StringBuilder();
StringBuilder groupString2 = new StringBuilder();
for (int i = 0; i <= 3000;i++)
{
if (groupString.Length <= 31740) {
groupString.Append("sampleNumber" + i.ToString() + ",");
}
else
{
groupString2.Append("sampleNumber" + i.ToString() + ",");
}
}
exclWs.Cells["A2"].Value= groupString.ToString();
exclWs.Cells["A3"].Value = groupString2.ToString();
exclPck.SaveAs(new System.IO.FileInfo("filenameHere.xlsx"));
作為數據衛生的一般規則,如果您要拉回此數量的結果,建議將這些類型的結果拆分為它們自己的附加工作簿,並在另一列中指定相關的ID,您應該利用excel更好地寬恕總行數限制(1,048,576),並將這些結果分開以提高可讀性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.