POI操作Excel的API注意点总结

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

基数问题

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

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

测试源码

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();
	}
}

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

原文地址:https://www.cnblogs.com/chentging/p/7120580.html