NPOI row.Cells[i] 的坑

27 篇文章 0 订阅

我有A行B列的EXCEL表格:

获取一行数据:

IRow row=sheet.GetRow(i);

正常是这样的

row.Cells.Count = B;

但由于会存在没有激活的单元格,导致 row.Cells.Count <=B。

坑是这样的:

当你想要对某行第2个(或其他)单元格进行赋值时,我是这样做了:

row.Cells[1].SetCellValue("######");

如果恰巧这行的所有单元格都是激活的,那这样做的结果是没错的。

但如果刚好第2个单元格(你想的)没有被激活过,这将导致第2个激活的单元格(具体哪个不确定)被覆盖。

 

正确做法:

//真正的第2个单元格

 

public ICell GetCell(int index)
{
ICell cell = this.Row.FirstOrDefault(n => n.ColumnIndex == index);
if (cell == null)
{
cell = this.Row.CreateCell(index);
}
return cell;
}

这样就保证第2个单元格被赋值,而不覆盖其它的。

 

碰到连续空单元格会导致数据列错乱,用以下方法解决

rw.GetCells().Select(R=>R.ToString()).ToArray()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值