2012-04-17 3 views
24

Simple toBytes()を呼び出すと、バイトが生成されますが、exelは警告をスローします。私は、このlinkを与え、ワークシートやPOI HOW-TOためJavadocsを見て周りグーグルドキュメント情報POI HSSFWorkbookをバイトに変換するにはどうすればよいですか?

を紛失

は、同様のことを言います。基本的に私はいくつかの情報を失うことなくBytesを得ることができないので、代わりにwriteメソッドを使用する必要があります。

書き込みは正常に動作しますが、実際にはバイトを送信する必要があります。私はそれを行うことができる方法はありますか?これは警告を出すことなくバイトを取得します。そのメーリングリストのポストとして

答えて

53

は完全なExcelファイルを作成 を再ために必要なデータのすべてを返さないHSSFWorkbook.getBytes()を呼び出すと述べました。

ByteArrayOutputStreamの書き込みメソッドを使用して、バイト配列を取得できます。

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

closeコールが本当にByteArrayOutputStreamのために必要ではありませんが、私見その後のストリームの異なる種類に変更する場合には、とにかく含めるための良いスタイルです。)

9

方法について:

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

完全なエクセルファイルを取得するには、write(OutputStream)メソッドを呼び出す必要があります。バイトを必要とする場合は、ByteArrayOutputStreamを与えます。

関連する問題