Вам необходимо добавить ловушку отключения, которая является потоком, который будет запускаться каждый раз при выходе из среды выполнения с кодом завершения 0. Вы должны остерегаться выхода с другим кодом выхода, если программа завершится сбоем или произойдет сбой питания, поскольку это приведет к в потере данных.
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
//write to .xlsx
}));