当前位置: 首页 > 知识库问答 >
问题:

Apache POI工作簿将奇怪字符写入OutputStream

庞旺
2023-03-14

我正在使用ApachePOI从Spring应用程序写入Excel文件(遵循本教程:https://www.roytuts.com/generic-way-of-writing-data-in-excel-using-apache-poi/。我的函数的身体几乎是一样的。)

public void writeToExcel(OutputStream outputStream, List<T> exportObjects, List<String> columns) throws NoSuchMethodException {
   ...
   workbook.write(outputStream);
   outputStream.flush();
 }

然后我把这个方法叫做:

  OutputStream outputStream = new ByteArrayOutputStream();
  importExportService.writeToExcel(outputStream, objects, header);

调试时,我可以看到正确的值被传递到单元格。但是当我通过workbook.write(outputStream)时,outputStream会得到这个值:

PK |b|b|b s(P               _rels/.rels���j�0�_���8�`�Q��2�m��4[ILb��ږ���.[K
�($}��v?�I�Q.���uӂ�h���x>=��@��p�H"�~�}�   �n����*"�H�׺؁�����8�Z�^'�#�
and so on

所以,我的问题是,在向OutputStream写入时,我是否遗漏了什么?为什么会发生这种情况,而不是在单元格中显示值?

任何帮助或想法都将不胜感激。

共有1个答案

欧旻
2023-03-14

Excel电子表格不是以文本格式保存的,因此当您尝试在调试器中将其作为文本查看时,它就是这样的。

它实际上是一个包含XML文件的. zip存档。如果您保存它并将扩展名更改为. zip,那么您将能够在Windows资源管理器中或使用zip命令查看内容。

 类似资料:
  • 然后另一个问题是工作簿的名称都不同,所有300个。是否有一个宏可以复制我打开的工作簿,而不是每次都输入实际的名称?

  • 所以在问这个之前,我搜索并发现了一些与我在这里想要做的相似的事情。 基本上我有工作簿AlphaMaster。这个工作簿是一个模板,我想用它来创建每周的新工作簿。 在本工作簿中,有名为“周一至周六”的工作表,以及带有相应日期的周一、周二等其他工作表。 我创建了一个在打开工作簿时加载的表单。我想要的是当我单击表单运行时,它将: > 将代码保存模板作为新工作簿运行 根据userform1的输入重命名工作

  • 这是我读写现有excel文件的课程。我一直在主类中通过传递filePath和fileName来调用这些函数。 当我在main中使用readExcel获取一个工作簿并调用这个函数时: 我得到了正确的行,并且能够调用此行上的所有函数。但是对于写Excel()中完全相同的工作表中的完全相同的行,我得到了一个空指针异常(上面代码中***前面的行)。getRow()在这里给我null。我在这里做错了什么?

  • 我正在处理一个项目,该项目需要读取Excel工作簿,调用必要的Web服务,然后从Web服务获取响应,并将该信息输入到已读取的同一Excel工作簿中。 以下是我在尝试写入Excel工作簿时看到的错误: 以下是我打开文件/读取的代码: 在此之后,我读取每一行并提取每个单元格值。 完成后,我将在成功和结果消息的标题下创建单元格,然后执行以下操作: 有人遇到过类似的问题吗?

  • 问题内容: 我正在一个项目中,该项目需要读取Excel工作簿,调用必要的Web服务,然后从Web服务获取响应,并将该信息输入到已读取的同一Excel工作簿中。 这是我尝试写入Excel工作簿时遇到的错误: 这是我打开文件/读取的代码: 之后,我读取每一行并提取每个单元格值。 完成此操作后,我将在“成功和结果消息”标题下创建单元格,然后执行以下操作: 有没有人遇到过类似的问题? 问题答案: 列出的当

  • 问题内容: 我正在创建一种从文件写入和读取工作簿的方法,但是当我第二次调用此方法时。发生错误:org.apache.xmlbeans.impl.values.XmlValueDisconnectedException 问题答案: 同意Akokskis,编写两次导致问题的文件,但是您可以在编写之后尝试重新加载工作簿,这样便可以正常工作。例如