获取HSSFWorkbook的长度

时间:2012-09-19 04:55:53

标签: java servlets apache-poi

如何获取Apache的POI HSSFWorkbook的文件大小?

我有像

这样的代码
// inside Servlet
OutputStream out = response.getOutputStream();
hSSFWorkbook.write(out);

我想在回复中添加Content-Length标题。

1 个答案:

答案 0 :(得分:4)

最好的办法是在某处缓冲它,例如

ByteArrayOutputStream baos = new ByteArrayOutputStream();
workbook.write(baos);

int length = baos.size();
// Send length...

// Send data
OutputStream out = response.getOutputStream();
out.write( baos.toByteArray() );
out.close();

如果您想避免在

中使用内存缓冲,则可以使用临时文件

POI只会在需要写出所有内容时计算大小,因为确定大小几乎是写出工作的一半!所以,你最好一次性获得大小和序列化