2014-01-20 77 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(); 
} 
相关问题