2012-04-17 29 views
24

Wywołanie prostego numeru powoduje wygenerowanie bajtów, ale wywołanie programu powoduje Ostrzeżenie.Jak mogę przekonwertować POI HSSFWorkbook na bajty?

utraconym dokumencie informacje

Googling wokół dał mi ten link i patrząc na Javadocs na arkuszu i UM HOW-TO mówią podobne rzeczy. Zasadniczo nie mogę uzyskać Bytes bez utraty niektórych informacji i zamiast tego należy użyć metody write.

Podczas pisania działa dobrze, naprawdę muszę wysłać bajty ponad. Czy mogę to zrobić? Otrzymujemy bajty bez ostrzeżenia.

Odpowiedz

53

W tej listy mailingowej postu powiedział

Wywoływanie HSSFWorkbook.getBytes() nie zwraca wszystkie dane niezbędne do ponownego skonstruować kompletny plik programu Excel.

Możesz użyć metody zapisu z ByteArrayOutputStream, aby uzyskać tablicę bajtów.

ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
try { 
    workbook.write(bos); 
} finally { 
    bos.close(); 
} 
byte[] bytes = bos.toByteArray(); 

(close połączenie nie jest naprawdę potrzebne dla ByteArrayOutputStream, ale imho jest to dobry styl i tak to w przypadku jej później zmieniony na inny rodzaj strumienia.)

9

Jak o:

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
workbook.write(baos); 
byte[] xls = baos.toByteArray(); 

Aby uzyskać pełny plik Excela, należy wywołać metodę write (OutputStream). Jeśli chcesz otrzymać bajty, po prostu daj ByteArrayOutputStream

Powiązane problemy