如何在HttpResponse中发送多个内存工作簿

时间:2016-09-23 12:38:47

标签: java apache-poi

我一直面临着手头的问题。我必须为我们的内部时间管理系统创建一个导出功能。有一个导出按钮,如果我们点击它,所有数据都会导出到Excel工作表。

用例是,如果要导出的数据包含多年的数据,则需要为每年创建一个单独的工作簿。

我已经能够创建多个工作簿,但我发现很难将那些创建的内存中工作簿发送回HttpResponse对象。

我也尝试过使用ZipOutputStream解决方案,但事实证明我们只能在ZipEntry对象中添加物理文件。

感谢任何类型的帮助。

1 个答案:

答案 0 :(得分:2)

  

我也尝试过使用ZipOutputStream解决方案但事实证明   我们只能在ZipEntry对象中添加物理文件。

不正确:

ZipOutputStream zos = new ZipOutputStream(...);
byte[] workBook; //Assign from your POI output
zos.putNextEntry(new ZipEntry("export-for-2016.xls"));
zos.write(workBook);
zos.closeEntry();

(为了清楚起见, UPDATE )最后三个方法调用可以使用多次,因为您需要将对象添加到zip文件中。

Apache commons-compress通常更好,但这应该让你开始。