Вы можете добавить данные на лист с неизвестным количеством существующих столбцов, таких как
XSSFCell cell = row.createCell(row.getPhysicalNumberOfCells());
cell.setCellValue(dataN);
потому что метод сообщает, сколько ячеек в строке уже есть, что является первым индексом несуществующих ячеек.
Теперь ваша часть должна выяснить, как сделать это в цикле для нескольких дополнительных ячеек подряд.
Если вы хотите добавить новые строки, сделайте это следующим образом:
XSSFRow row = sheet.createRow(sheet.getPhysicalNumberOfRows());