0


NPOI删除Excel中的行

使用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_software\3_0test\NPOI";
            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行

标签: 其他

本文转载自: https://blog.csdn.net/linnge/article/details/121039288
版权归原作者 linnge 所有, 如有侵权,请联系我们删除。

“NPOI删除Excel中的行”的评论:

还没有评论