Причина, по которой ваш документ заменяется каждый раз, заключается в том, что ваш workbook
пуст. workbook.write(out)
означает, что вы записываете все в книге в какое-то место (extract.xlsx), а не записываете данные вашей книги в файл!
Что вам нужно сделать, это открыть книгу, которую вы пытаетесь редактировать:
FileInputStream xlsFile = new FileInputStream("extract.xls");
XSSFWorkbook workbook = new XSSFWorkbook(xlsFile);
... получить последний ряд или столбец
XSSFSheet sheet = workbook.getSheetAt(0);
int lastRow = sheet.getLastRowNum();
... и запишите свои данные оттуда.
Затем, как и раньше, вы можете использовать workbook.write(out)
для сохранения вашей рабочей книги.