NPOI-真正删除行(非清空数据)的方法

作者:vkvi 来源:ITPOW(原创) 日期:2012-2-17

NPOI 在 .NET 中非常快速地操作 Excel,当我们需要删除某一行时,我们发现有个方法叫 RemoveRow,但是正如它的名字一样 Remove,和 Delete 是有区别的,所以 RemoveRow 只能清空行数据,不能实现删除行。

真正的做法是通过向上移动行来实现的,听起来有些不可思议。

采用 ShiftRows 向上移动,第三个参数为正数表示向下移动,为负数表示向上移动,为负数的话只能为 -1,即一次只能上移一行。前两个参数是表示要移动的行的索引值范围。

上述代码实现的是 Excel 表有个头子占 headRowsCount,有个脚脚占 1 行,中间有许多空行,其中填充的数据数量是 dv.Count,现在就是要删除这些空行中没有被添加的行。

注意 i 的范围,特别是最小值,由于在 NPOI 编辑中第一行用 0 表示,所以 i 的最小值其实是第二个空行。为什么不是第一个空行呢?因为我们可以看到移了第二个空行后,实际第一个空行是被 Excel 的脚脚占着了,没必要再移了,这点要注意。

总之,真实体验一把可能会更好理解。

相关文章