加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用npoi单元格范围地址读取excel

发布时间:2020-12-16 01:59:37 所属栏目:百科 来源:网络整理
导读:我知道NPOI对于创建excel文件非常棒.现在我想在特定专栏中阅读excel.这是我的excel格式: D E F G H3 Col1 Col2 Col3 Col4 Col54 a 1 1/1/20145 b 2 2/1/20146 c 3 3/1/20147 d 4 4/1/20148 e 5 5/1/2014 我只想获得Col2,Col4和Col5中的数据. 它应该是这样的
我知道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

我只想获得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

我必须做什么 ?
我可以使用范围地址获取特定列,然后获取单元格值?

谢谢专家.

解决方法

如果您有一个固定的工作表模板,实现所需的最简单方法是循环遍历行并检索指定索引处的单元格值.

例如,基于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();
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读