我在excel文件中有一个变量列表,用作在线应用程序的输入并生成结果。但是,当我尝试通过添加新列和单元格将输出保存到同一文件中时,会成功发生,该文件的原始内容将被删除。我只想将信息添加到同一文档中,但是通过谷歌搜索发现的唯一选择是创建另一个文件。
只是为了澄清:Variables for input 而不是仅添加信息,而是Changed document。
如何在不添加更多参数和重新添加信息的情况下进行修复?
@Keyword
public void demoKey(String name) throws IOException{
FileInputStream fis = new FileInputStream("C://Users/i2srsm/Desktop/New Microsoft Excel Worksheet.xlsx");
XSSFWorkbook workbook = new XSSFWorkbook(fis);
XSSFSheet sheet = workbook.getSheet("Data for full set");
int columnNumber = sheet.getRow(0).getLastCellNum();
int firstRow = sheet.getFirstRowNum();
int lastRow = sheet.getLastRowNum();
sheet.createRow(firstRow).createCell(columnNumber).setCellValue('Proposta');
for (int rn=(firstRow); rn<=lastRow; rn++){
Cell cell = sheet.createRow(rn).createCell(columnNumber+1)
cell.setCellType(cell.CELL_TYPE_STRING);
cell.setCellValue(name);
FileOutputStream fos = new FileOutputStream("C://Users/i2srsm/Desktop/New Microsoft Excel Worksheet.xlsx");
workbook.write(fos);
fos.close();
}
}
}
答案 0 :(得分:0)
请勿使用sheet.createRow(row index)
更新现有的excel文件。这将创建一个新行。如果要更新工作表中的现有行,请首先获取相关的现有行,然后创建一个新单元格。
获取现有行
Row row = sheet.getRow(row index);
在现有行上方创建新单元格
Cell cell = row.createCell(cell index);
尝试
sheet.getRow(firstRow).createCell(columnNumber).setCellValue("Proposta");
for (int i=(firstRow+1); i<=lastRow; i++){
Row row = sheet.getRow(i);
Cell cell = row.createCell(columnNumber);
cell.setCellType(cell.CELL_TYPE_STRING);
cell.setCellValue(name);
}
FileOutputStream fos = new FileOutputStream("C:/Users/LifeStyle/Documents/output.xlsx");
workbook.write(fos);
fos.close();