POI XSSFSheet按行删除单元格

删除整行单元格,利用shiftRows方法

shiftRows(int startRow, int endRow, final int n, boolean copyRowHeight, boolean resetOriginalRowHeight);

startRow起始行,endRow终止行,n为偏移量,copyRowHeight是否复制行高,resetOriginalRowHeight是否充值行高

int lastRowNum = sheet.getLastRowNum();//最后一行的rownum

for(int i=0;i<lastRowNum;i++){
XSSFRow row = sheet.getRow(i);

if(需要删除该行){

//将该行下一行至最后一行的内容上移1行,上移后会覆盖该行的数据,就达到了删除该行的结果
sheet.shiftRows(row.getRowNum()+1, lastRowNum, -1,true,false);
}
lastRowNum = sheet.getLastRowNum();//上移后sheet最后一行会变,重新获取一下
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 Apache POI 中的 Sheet 类的 getRow 方法和 getPhysicalNumberOfRows 方法来遍历每一行,并使用 Row 类的 getPhysicalNumberOfCells 方法和 getCell 方法来遍历每一个单元格,然后根据单元格的宽度判断每行单元格是否一样长。具体实现可以参考以下示例代码: ``` import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.*; import java.io.File; import java.io.FileInputStream; import java.io.IOException; public class PoiExample { public static void main(String[] args) throws IOException { File file = new File("example.xlsx"); FileInputStream fis = new FileInputStream(file); XSSFWorkbook workbook = new XSSFWorkbook(fis); XSSFSheet sheet = workbook.getSheetAt(0); int rowCount = sheet.getPhysicalNumberOfRows(); int columnCount = sheet.getRow(0).getPhysicalNumberOfCells(); int[] columnWidths = new int[columnCount]; for (int i = 0; i < rowCount; i++) { XSSFRow row = sheet.getRow(i); if (row != null) { for (int j = 0; j < columnCount; j++) { XSSFCell cell = row.getCell(j); if (cell != null) { int width = sheet.getColumnWidth(j); if (width > columnWidths[j]) { columnWidths[j] = width; } } } } } boolean sameWidth = true; for (int i = 0; i < columnCount; i++) { if (columnWidths[i] != columnWidths[0]) { sameWidth = false; break; } } if (sameWidth) { System.out.println("每行单元格宽度相同"); } else { System.out.println("每行单元格宽度不同"); } workbook.close(); fis.close(); } } ``` 这个示例代码会读取名为 example.xlsx 的 Excel 文件的第一个工作表的所有单元格的宽度,并判断每行单元格的宽度是否相同。如果每行单元格的宽度相同,就会输出 "每行单元格宽度相同",否则会输出 "每行单元格宽度不同"。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值