2019年1月16日

EPPlus讀取 xlsx,以 ExcelRange取值疑雲

客戶反應我們提供的報表表格有錯
最後追蹤到了是以 EPPlus讀取來源檔案 xlsx時,取 head row的範圍有錯

先看看兩個檔案的內容
測試用:


客戶用:



經由這段程式碼取 header row的內容:
// sheet.Cells[1,1,1,5]
foreach (var cell in sheet.Cells[sheet.Dimension.Start.Row, sheet.Dimension.Start.Column, sheet.Dimension.End.Row, sheet.Dimension.Start.Column])
{
    result.Add(GetAttributeModel(cell));
}

但是測試用檔案在 foreach執行取得的第一個 cell總是 "B1",客戶用檔案的 cell卻是 "A1"
到底是 EPPlus有問題還是檔案有問題 ...

因為追蹤原始碼工程浩大,決定先從檔案著手,解壓縮來比對看看
馬上抓到疑點!!

檔案位置:\{檔名}\xl\worksheets\sheet1.xml

很明顯在第 18行有鬼,左側是測試用檔案,因為沒有框線,在 xml內乾脆直接不存在了

好樣的 ...
因為我們自己測試用檔案都是 key完值就拿去上傳了,框線什麼的才沒空加呢,以至於之前完全沒碰到此種情境,也不知道程式其實是有 bug的,只是運氣不好才沒碰到