I think you create new rows and cells again and again and cause excel rewriting.
Essentially, you need to get rows and cells instead of creating them in your program.
HSSFRow row1 = worksheet.createRow(0);
You may need to get a string instead of creating it.
HSSFRow row1 = worksheet.getRow(0);
https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Sheet.html#getRow(int)
This small example updates the second cell of the second row:
//Read the spreadsheet that needs to be updated FileInputStream fsIP= new FileInputStream(new File("C:\\Excel.xls")); //Access the workbook HSSFWorkbook wb = new HSSFWorkbook(fsIP); //Access the worksheet, so that we can update / modify it. HSSFSheet worksheet = wb.getSheetAt(0); // declare a Cell object Cell cell = null; // Access the second cell in second row to update the value cell = worksheet.getRow(1).getCell(1); // Get current cell value value and overwrite the value cell.setCellValue("OverRide existing value"); //Close the InputStream fsIP.close(); //Open FileOutputStream to write updates FileOutputStream output_file =new FileOutputStream(new File("C:\\Excel.xls")); //write changes wb.write(output_file); //close the stream output_file.close();
Garry source share