Java 如何将excel文件数据写入OutputStream

Java 如何将excel文件数据写入OutputStream,java,excel,download,apache-poi,spreadsheet,Java,Excel,Download,Apache Poi,Spreadsheet,我有一个基于Java的web应用程序,可以将数据下载到excel文件中。我正在使用ApachePOI4准备工作簿(org.Apache.poi.xssf.streaming.SXSSFWorkbook)。我检查了工作簿类的write方法,它确实将数据写入输出流。但是,在将完整的数据写入工作簿后会发生这种情况,而且由于数据量巨大,这需要时间。我正在执行以下步骤: 执行查询 创建工作簿 迭代查询结果集并使用数据创建行和单元格。(我正在寻找一种解决方案,将此内容直接写入流) 将数据写入流写入(输出流

我有一个基于Java的web应用程序,可以将数据下载到excel文件中。我正在使用ApachePOI4准备工作簿(
org.Apache.poi.xssf.streaming.SXSSFWorkbook
)。我检查了工作簿类的write方法,它确实将数据写入输出流。但是,在将完整的数据写入工作簿后会发生这种情况,而且由于数据量巨大,这需要时间。我正在执行以下步骤:

  • 执行查询
  • 创建工作簿
  • 迭代查询结果集并使用数据创建行和单元格。(我正在寻找一种解决方案,将此内容直接写入流)
  • 将数据写入流<代码>写入(输出流)
Apache
org.Apache.commons.csv.CSVPrinter
将数据直接写入流中

try (CSVPrinter printer = new CSVPrinter(new OutputStreamWriter(outputStream), CSVFormat.DEFAULT)) {
     printer.printRecord("id", "userName", "firstName", "lastName", "birthday");
     printer.printRecord(1, "username1", "UserOne", "LastOne", LocalDate.of(1973, 9, 15));
     printer.println();
     printer.printRecord(2, "username2", "UserTwo", "LastTwo", LocalDate.of(1985, 3, 29));
 } catch (IOException ex) {
     ex.printStackTrace();
 }

这正是我需要的。请建议我是否可以使用ApachePOI或任何其他框架来实现这一点。

完整的功能。内存效率高且可流化。挑一个…嗨@Gagravarr,谢谢你的回复。但是,使用ApachePOI有什么方法可以实现同样的效果吗?也许它会对您有所帮助。