A Пример минимальной воспроизводимости поможет дать более полный ответ.
Однако в следующем коде используется PipedStreams для ускорения операций, показанных в коде вопроса. Однако выгода, которую вы получаете от этого подхода, не может быть больше, чем у самого быстрого из двух параллельных процессов. Или, говоря иначе, конечная продолжительность не может быть быстрее, чем более медленная из параллельных операций. В подходе PipedStreams вам нужно 2 потока. PipedOutputStream, куда будут записываться данные, и PipedInputStream, где данные будут использоваться. Чтобы воспользоваться этим подходом, вам необходимо выполнить эти две операции параллельно.
public StreamedContent generateStreamRep(final String fileName, final Workbook wb) {
try (final PipedOutputStream dsf = new PipedOutputStream ();
final PipedInputStream sink=new PipedInputStream (dsf);){
final ExecutorService executorService= Executors.newSingleThreadExecutor();
//Write to output stream
executorService.execute(()->wb.write(dsf));
//read from input stream
file = new DefaultStreamedContent(sink, "xlsx", fileName);
executorService.shutdown();
//wait until task is finished or until a maximum time, which ever comes first. Normally in this case the task is already finished
executorService.awaitTermination(2,TimeUnit.Minutes);
}