NPOI删除Excel中的行
2023-03-20 14:59:10 时间
使用NPOI中的ShiftRows删除Excel中的行
ShiftRows(int startRow,int endRow,int n)
startRow 起始行,行编号和列编号都是从0开始
endRow 截止行
n 删除或增加的行数,当n大于0时增加行,在n小于0时减少行
sheet.LastRowNum 获取当前表的最后一行行编号
目标:搞懂如何删除最后一行
使用的Excel表内容
使用的代码--代码很简单
string filepath = @"E:测试为啥删除行不对.xlsx";
string filepath_save = @"E:3_software3_0testNPOI";
IWorkbook workbook = null;
FileStream fs = new FileStream(filepath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
if (filepath.IndexOf(".xlsx") > 0) // 2007版本
workbook = new XSSFWorkbook(fs);
else if (filepath.IndexOf(".xls") > 0) // 2003版本
workbook = new HSSFWorkbook(fs);
int count = workbook.NumberOfSheets;
for (int k = 0; k < count; k++)
{
ISheet sheet = workbook.GetSheetAt(k);
//标题格式
for (int i = 0; i < sheet.LastRowNum; i++)
{
if (sheet.GetRow(i).GetCell(0).ToString() == "第二十一行")//需要删除的行的内容
{
sheet.ShiftRows(i, sheet.LastRowNum, -1);//i+1删除的是当前行
}
Console.WriteLine(sheet.LastRowNum);
}
}
fs.Close();
FileStream file = new FileStream(filepath_save + "\测试为啥删除行不对.xlsx", FileMode.Create);
workbook.Write(file);
file.Close();
结果表明:并未删除行
excel表中共有21行数据,LastRowNum=20,for (int i = 0; i < sheet.LastRowNum; i++),无法检查到最后一行,故修改为for (int i = 0; i < sheet.LastRowNum+1; i++)
结果表明:删除了第二十行
1.ShiftRows(int startRow,int endRow,int n)在n小于0的时候的意思是,将startRow到endRow向上移动n行,因此sheet.ShiftRows(i, sheet.LastRowNum, -1)其实删除的是第i-1行的数据,应该修改为sheet.ShiftRows(i+1, sheet.LastRowNum, -1),
2.但此时当for语句执行最后一次循环时,i=20,i+1=21, sheet.LastRowNum=20,起始行大于截止行,报错,故应该修改为sheet.ShiftRows(i+1, sheet.LastRowNum+1, -1)
结果表明:成功
当n=-3市,第十八行数值清空,因为把第22行向上挪动了3行
相关文章
- Kafka Stream(KStream) vs Apache Flink
- 基于centos7安装部署nginx
- 腾讯云云服务器安装windows server2003的方法
- 悬镜安全扫描导致4核cpu负载使用率400%
- 新韶光电热的防爆加热器应用在石油化工行业中的使用情况
- 安装PyCharm详细步骤有哪些
- 音视频开发之旅(59)- 捕获收集、定位分析 Native崩溃
- PyCharm使用教程(新手也能看懂)
- 变量定义的分类和变量类型判断的方法
- stream 流的使用技巧总结,这些你必须知道
- 如何内网使用Cloud云最新MSP迁移工具箱Docker镜像?
- 【技术种草】手把手教大家用97元撸到一个10年域名
- 必读 | 如何在香港云CVM实现全球anycast-EIP同服加速游戏业务?
- 使用 React Hooks 时要避免的6个错误
- TCP三次握手四次挥手(三国版)
- 详解 HTTP2.0 及 HTTPS 协议
- 开源月刊《HelloGitHub》第 68 期
- TS中的命名空间合并
- HTTP客户端工具该选哪个?进来看
- Java8 | 如何使用Group By 聚合操作集合数据?