關於 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 有太多小問題真的很想吐槽了
這個問題去年被發現,但是至今尚未改善
如要參照這個屬性一定要非常小心,哪天突然修正好,你的程式可能也要跟著更新與修正了。
留言