2014-01-20 78 views
2

我知道NPOI對於創建excel文件非常棒。現在我想在特定的專欄中閱讀excel。這是我的excel格式:使用npoi單元格讀取excel範圍地址

  D  E  F  G  H 
3   Col1 Col2 Col3 Col4 Col5 
4     a    1  1/1/2014 
5     b    2  2/1/2014 
6     c    3  3/1/2014 
7     d    4  4/1/2014 
8     e    5  5/1/2014 

我只想在Col2,Col4和Col5中獲取數據。 它應該是這樣的:

Col2 Col4 Col5 
a  1  1/1/2014 
b  2  2/1/2014 
c  3  3/1/2014 
d  4  4/1/2014 
e  5  5/1/2014 

我該怎麼辦? 我可以使用範圍地址來獲得特定的列,然後獲取單元格值嗎?

感謝專家。

回答

6

如果您有一個固定的工作表模板,實現您想要的最簡單的方法是遍歷行並檢索指定索引處的單元格值。

例如,基於OP的例子:

var sheet = workbook.GetSheetAt(0); // assuming 0 is the worksheet index 
for (var i = 0; i <= sheet.LastRowNum; i++) 
{ 
    var row = sheet.GetRow(i); 
    if (row == null) continue; 

    // do your work here 
    Console.Write("{0}\t", row.GetCell(4)); 
    Console.Write("{0}\t", row.GetCell(6)); 
    Console.Write("{0}\t", row.GetCell(7)); 
    Console.WriteLine(); 
} 

但是,如果你堅持使用範圍的地址,你可以嘗試使用CellRangeAddress類是這樣的:

var sheet = workbook.GetSheetAt(0); 
var range = "E3:H8"; 
var cellRange = CellRangeAddress.ValueOf(range);  

for (var i = cellRange.FirstRow; i <= cellRange.LastRow; i++) 
{ 
    var row = sheet.GetRow(i); 
    for (var j = cellRange.FirstColumn; j <= cellRange.LastColumn; j++) 
    { 
    // skip cell with column index 5 (column F) 
    if (j == 5) continue; 

    // do your work here 
    Console.Write("{0}\t", row.GetCell(j));        
    } 

    Console.WriteLine(); 
} 
相關問題