POI操作Excel的API注意点总结

时间:2025-01-01 09:05:02

本篇是关于POI.jar操作Excel的API注意事项

基数问题

说明:我使用的是POI 3.15版本的,在版本问题上建议大家,在版本稳定的基础上尽量使用高版本的

看过很多帖子在问一个问题:假设原来有5行,删除最后一行之后,再获取还是5行的问题,我使用的这个版本没出现这样的问题,大家也可以使用我这个版本(哈哈)

POI操作Excel的API注意点总结

测试源码

public void testPOI() {
try {
Workbook workbook = WorkbookFactory.create(new File("demo.xlsx"));
int numberOfSheets = workbook.getNumberOfSheets();
for (int s = 0; s < numberOfSheets; s++) {
String sheetName = workbook.getSheetName(s);
System.out.println(sheetName);
//获取总行数
Sheet sheet = workbook.getSheetAt(s);
//获取最后一行索引(基数为0)
int lastRowNum = sheet.getLastRowNum();
//获取总行数(基数为1)
int physicalNumberOfRows = sheet.getPhysicalNumberOfRows();
System.out.println("lastRowNum:" + lastRowNum);
System.out.println("physicalNumberofRows:" + physicalNumberOfRows);
for (int r = 0; r < physicalNumberOfRows; r++) {
if (r == sheet.getLastRowNum()) { //判断是否是最后一行
Row row = sheet.getRow(r);
sheet.removeRow(row); //如果是最后一行,删除这行
} else {
Row row = sheet.getRow(r);
//获取物理列(基数为1)
int physicalNumberOfCells = row.getPhysicalNumberOfCells();
//获取最后一列索引(基数为1)
short lastCellNum = row.getLastCellNum();
System.out.println("physicalNumberOfCells:" + physicalNumberOfCells);
System.out.println("lastCellNum:" + lastCellNum);
}
}
System.out.println("----------华丽分割线----------");
//获取最后一行索引(基数为0)
lastRowNum = sheet.getLastRowNum();
//获取总行数(基数为1)
physicalNumberOfRows = sheet.getPhysicalNumberOfRows();
System.out.println("lastRowNum:" + lastRowNum);
System.out.println("physicalNumberofRows:" + physicalNumberOfRows);
}
} catch (EncryptedDocumentException e) {
e.printStackTrace();
} catch (InvalidFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

此贴持续更新......