我需要一种在预先存在的行之间插入新单元格和/或行而不删除任何行的方法。
我尝试使用:
public static void addRow(File f, int amount, int currentRow)
throws Exception {
FileInputStream file = new FileInputStream(f);
XSSFWorkbook workbook = new XSSFWorkbook(file);
XSSFSheet sheet = workbook.getSheetAt(0);
sheet.shiftRows(currentRow, currentRow + amount, amount, true, true);
file.close();
FileOutputStream out = new FileOutputStream(f);
workbook.write(out);
out.close();
}
但不幸的是,它删除了一些行以适应这种转变。删除的行似乎是随机的,它们实际上并不直接位于移位的行或以上。如果我移动多行,它们似乎发生在移位的行之间。
提前感谢您的帮助。
答案 0 :(得分:4)
API的第二个参数是“endRow” - 通过传递“currentRow + amount”,您不会将所有行从插入点开始直到结束。相反,你只需要移动“金额”行 - 这可能会导致超出“currentRow + amount”的所有行的覆盖(如果有的话)。
我会这样做:
sheet.shiftRows(currentRow, sheet.getLastRowNum()+1, amount, true,true);