2014-01-20 6 views
2

Я знаю, что NPOI очень классный для создания файла excel. И теперь я хочу читать excel в определенной колонке. Это мой формат excel:Чтение excel с использованием адреса диапазона npoi

  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(); 
} 
Смежные вопросы