Ich versuche, ein Java-Programm zu schreiben, das täglich ausgeführt wird (mit einem Taskplaner) und eine Spalte an eine Excel-Tabelle bei jeder Ausführung anhängen wird. Das Problem, das ich habe, ist, dass es nur die Datei neu schreibt, nicht daran anfügt. Ich bin mit Apache POI, hier ist der entsprechende Code:Aktualisieren der vorhandenen Excel-Datei in Java Apache POI
public static void toExcel(List<String> results, List<Integer> notActive)throws IOException{
try {
FileInputStream fIPS= new FileInputStream("test.xls"); //Read the spreadsheet that needs to be updated
HSSFWorkbook wb;
HSSFSheet worksheet;
if(fIPS.available()>=512) {
wb = new HSSFWorkbook(fIPS); //If there is already data in a workbook
worksheet = wb.getSheetAt(0);
}else{
wb = new HSSFWorkbook(); //if the workbook was just created
worksheet = wb.createSheet("Data");
}
//Access the worksheet, so that we can update/modify it
HSSFRow row1 = worksheet.createRow(0); //0 = row number
int i=0;
Cell c = row1.getCell(i);
while (!(c == null || c.getCellType() == Cell.CELL_TYPE_BLANK)) { //cell is empty
i++;
c=row1.getCell(i);
}
HSSFRow rowx;
int x=0;
for(String s : results) {
rowx = worksheet.createRow(x);
HSSFCell cellx = rowx.createCell(i); //0 = column number
cellx.setCellValue(s);
x++;
}
fIPS.close(); //Close the InputStream
FileOutputStream output_file =new FileOutputStream("test.xls");//Open FileOutputStream to write updates
wb.write(output_file); //write changes
output_file.close(); //close the stream
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Garry, ich das versucht, aber ohne Erfolg. – Seth
@Seth Sind Sie sicher, Sie haben alle Vorkommen von createRow mit getRow aktualisiert? – Garry
@Seth .. Sie müssen auch von createCell zu getCell wechseln – Garry