簡體   English   中英

Excel發現不可讀的內容-恢復截斷

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM