Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取HSSF工作簿的长度_Java_Servlets_Apache Poi - Fatal编程技术网

Java 获取HSSF工作簿的长度

Java 获取HSSF工作簿的长度,java,servlets,apache-poi,Java,Servlets,Apache Poi,如何获取Apache POI的文件大小HSSFWorkbook 我有这样的代码 // inside Servlet OutputStream out = response.getOutputStream(); hSSFWorkbook.write(out); 我想在响应中添加内容长度标题。最好的办法是将其缓冲在某个地方,例如 ByteArrayOutputStream baos = new ByteArrayOutputStream(); workbook.write(baos); int

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

我有这样的代码

// inside Servlet
OutputStream out = response.getOutputStream();
hSSFWorkbook.write(out);

我想在响应中添加
内容长度
标题。

最好的办法是将其缓冲在某个地方,例如

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只会在需要写出所有内容时计算大小,因为计算大小几乎是写出内容的一半!因此,您最好一次性获得大小和序列化

从未使用POI,但我看到他们的Javadocs列出getBytes()返回一个字节数组,您可以从中计算字节大小。@asgs抱歉,但我使用的是
工作簿
(接口),而不是
HSSFWorkbook
(实现)。忘了把它记下来。