0

最近从 poi-2.5.1 升级到 poi-4.1.2 并且正在发生的事情是在生成的 .xls 文件中插入一个空白行作为第一行。这是通过比较从 poi-2.5.1 创建的文件与从 poi-4.1.2 生成的文件来确定的。手动删除第一行时,我可以正常打开电子表格,但文件中的第一行会出现错误,文件格式和扩展名不匹配。

我的应用程序在 weblogic-12.2.1.4 中运行,它采用正在向用户显示的表格并在下载给用户的 jsp 中创建一个 excel 电子表格。

我试过搜索这个问题,我能找到的是如何在阅读电子表格时删除该行。

编码

        OutputStream output = response.getOutputStream();
        response.setHeader("Expires", "0");
        response.setHeader("Pragma", "private");
        response.setHeader("Content-Disposition","attachment;filename=" + tableId + "xls");
        response.setContentType("application/x-download; charset=UTF-8");
    
        Workbook book = new HSSFWorkbook();
      
        CreationHelper createHelper = book.getCreationHelper();
        Sheet sheet = book.createSheet();
    ...
    ...
    ...
       
        book.write(output);
        output.close();

我在代码片段之前添加了out.clear()andresponse.reset()并没有帮助。

我也试过评论后的一切 Workbook book = new HSSFWorkbook();

然后做book.write(output);,我仍然得到空白行。

这是仅Workbook book = new HSSFWorkbook(); 在 Notepad++ 中查看 的输出 输出在 Notepad++ 中的样子

4

1 回答 1

0

经过一个多月的搜索和尝试不同的事情,我确定问题在于我已将一条长线切换到我可以轻松查看所有导入的位置,

正确的方法

    <%@page import = "java.util.*,java.net.URLDecoder,org.apache.poi.hssf.usermodel.*,org.apache.poi.hssf.util.HSSFColor,org.apache.log4j.Logger"%>

不正确的方式 - 这会导致问题。我已将其更改为这种方式,以便我可以轻松查看所有正在导入的文件。有 20 个文件被导入。对于这个例子,我只是将它减少到 5。

<%@page import = "java.util.*,
                  java.net.URLDecoder,
                  org.apache.poi.hssf.usermodel.*,
                  org.apache.poi.hssf.util.HSSFColor,
                  org.apache.log4j.Logger"%>

由于某种原因,当导入语句不在一行中时,它会将空白作为 OutputStream 中的第一行

于 2021-04-12T00:01:36.080 回答