2012-04-17 9 views
24

Chiamare semplice toBytes() produce i byte ma exel genera Avviso.Come posso convertire POI HSSFWorkbook in byte?

documento perso informazioni

Googling intorno a me ha dato questa link e guardando Javadocs per foglio di lavoro e POI HOW-TO dire cose simili. Fondamentalmente non riesco a ottenere Bytes senza perdere alcune informazioni e invece dovrei usare il metodo write.

Mentre la scrittura funziona correttamente, ho davvero bisogno di inviare i byte. C'è un modo per farlo? Quello è ottenere i byte senza ricevere alcun avviso.

risposta

53

Come quel post mailing list detto

Invocare HSSFWorkbook.getBytes() non restituisce tutti i dati necessari per ri costruire un file completo di Excel.

È possibile utilizzare il metodo di scrittura con ByteArrayOutputStream per ottenere l'array di byte.

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

(Il close chiamata non è realmente necessario per un ByteArrayOutputStream, ma imho è buon stile di includere in ogni caso nel caso in cui la sua poi cambiato in un diverso tipo di flusso.)

9

ne dite:

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

Per ottenere un file excel completo, è necessario chiamare il metodo write (OutputStream). Se vuoi dei byte, dai un ByteArrayOutputStream

Problemi correlati