關於 NPOI 取得 列 (Row) 和 欄(Cell) 數量




關於 NPOI 裏面如何取得 列(Row) 與欄(Cell)的數量。

NPOI 對於 IRow 或 ICell 沒有類似集合數量的 count 或是 length 可以取得,
可是相對的有 FirstRowNum / LastRowNum / FirstCellNum / LastCellNum 可以用。

它代表是 首列位置 / 末列位置 / 首欄位置 / 末欄位置

但是非常奇異的是,這兩種的取出值卻完全不是這麼一回事

正常來說,以位置來看的話, C# 計算是從 0 開始

因此以上圖 EXCEL來看應該是:

FirstRowNum = 0
LastRowNum = 10
FirstCellNum  = 0
LastCellNum  = 10

列(Row) 和 欄(Cell) 和都 各11個

但是,我們實際把它取出來看卻發現詭異事情了

Console.WriteLine("FirstRowNum = " + ws1.FirstRowNum.ToString() + " ,LastRowNum = " + ws1.LastRowNum.ToString());
Console.WriteLine("FirstCellNum = " + ws1.GetRow(0).FirstCellNum.ToString() + " ,LastCellNum = " + ws1.GetRow(0).LastCellNum.ToString());

結果:



看! LastCellNum 居然是 11 

NPOI 有太多小問題真的很想吐槽了

這個問題去年被發現,但是至今尚未改善

如要參照這個屬性一定要非常小心,哪天突然修正好,你的程式可能也要跟著更新與修正了。

留言

這個網誌中的熱門文章

【研究】列印的條碼為什麼很難刷(掃描)

統一發票列印小程式

C# 使用 Process.Start 執行外部程式