如果您使用的是XLS文件(不是XLSX),则应使用HSSFWorkbook。我刚刚测试了以下解决方案,并且一切正常:
File file = new File(....); FileInputStream fis = new FileInputStream(file); HSSFWorkbook wb = new HSSFWorkbook(fis); HSSFSheet sheet = wb.getSheetAt(0); sheet.shiftRows(3, 3, -1); File outWB = new File(.....); OutputStream out = new FileOutputStream(outWB); wb.write(out); out.flush(); out.close();
甚至更好地使用Workbook工厂,该工厂会为您进行识别:
Workbook wb = WorkbookFactory.create(file); Sheet sheet = wb.getSheetAt(0); sheet.shiftRows(3, 3, -1);
在下面,您可以找到执行行删除的功能,该功能可以在xls和xlsx中使用(已测试;))。
Workbook wb = WorkbookFactory.create(file);Sheet sheet = wb.getSheetAt(0);removeRow(sheet, 2);File outWB = new File(...);OutputStream out = new FileOutputStream(outWB);wb.write(out);out.flush();out.close();public static void removeRow(Sheet sheet, int rowIndex) { int lastRowNum = sheet.getLastRowNum(); if (rowIndex >= 0 && rowIndex < lastRowNum) { sheet.shiftRows(rowIndex + 1, lastRowNum, -1); } if (rowIndex == lastRowNum) { Row removingRow = sheet.getRow(rowIndex); if (removingRow != null) { sheet.removeRow(removingRow); } }}


