我知道NPOI对于创建excel文件非常棒.现在我想在特定专栏中阅读excel.这是我的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
Run Code Online (Sandbox Code Playgroud)
我只想获得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
Run Code Online (Sandbox Code Playgroud)
我必须做什么 ?我可以使用范围地址获取特定列,然后获取单元格值?
谢谢专家.
如果您有一个固定的工作表模板,实现所需的最简单方法是循环遍历行并检索指定索引处的单元格值.
例如,基于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();
}
Run Code Online (Sandbox Code Playgroud)
但是如果你坚持使用范围地址,你可以尝试使用这样的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();
}
Run Code Online (Sandbox Code Playgroud)