项目中是用poi做报表,项目组长做报表时候留下一个为解决的问题 ,由于组长要忙其他事情,这个就交给我解决。
其中ExcelUtils的删除方法是这样的
public static void removeRow(XSSFSheet sheet, int rowIndex) {
int lastRowNum = sheet.getLastRowNum();
if (rowIndex >= 0 && rowIndex < lastRowNum)
sheet.shiftRows(rowIndex + 1, lastRowNum, -1, true, false); // 将行号为rowIndex+1一直到行号为lastRowNum的单元格全部上移一行,以便删除rowIndex行
if (rowIndex == lastRowNum) {
XSSFRow removingRow = sheet.getRow(rowIndex);
if (removingRow != null)
sheet.removeRow(removingRow);
}
}
这里我们可以看到只能针对XSSFSheet 表格。所以修改方案是这样的
public static void removeRow(Sheet sheet, int rowIndex) {
int lastRowNum = sheet.getLastRowNum();
if (rowIndex >= 0 && rowIndex < lastRowNum)
sheet.shiftRows(rowIndex + 1, lastRowNum, -1, true, false); // 将行号为rowIndex+1一直到行号为lastRowNum的单元格全部上移一行,以便删除rowIndex行
if (rowIndex == lastRowNum) {
Row removingRow = sheet.getRow(rowIndex);
if (removingRow != null)
sheet.removeRow(removingRow);
}
}