52

Simpleを呼び出すtoBytes()とバイトが生成されますが、exelは警告をスローします。

失われたドキュメント情報

グーグルでこのリンクを取得し、ワークシートのJavadocとPOIHOW -TOを見て同様のことを言いました。基本的にBytes、いくつかの情報を失うことなく取得することはできず、write代わりにメソッドを使用する必要があります。

書き込みは正常に機能しますが、実際にバイトを送信する必要があります。それができる方法はありますか?つまり、警告を表示せずにバイトを取得します。

4

2 に答える 2

111

そのメーリングリストの投稿が言ったように

呼び出しHSSFWorkbook.getBytes()ても、完全なExcelファイルを再構築するために必要なすべてのデータが返されるわけではありません。

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

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

(このclose呼び出しは実際には必要ありませんがByteArrayOutputStream、後で別の種類のストリームに変更された場合に備えて、とにかく含めるのが良いスタイルです。)

于 2012-04-17T08:45:30.163 に答える
22

どうですか:

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

完全なExcelファイルを取得するには、write(OutputStream)メソッドを呼び出す必要があります。それからバイトが必要な場合は、ByteArrayOutputStreamを指定するだけです

于 2012-04-17T08:45:38.257 に答える