Java excel poi 下载模板功能无法在Microsoft Excel 打开,但是可以WPS Excel打开

问题:

并且只显示前几个字段,后面的几个字段不显示

 

版本使用:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.3</version>
</dependency>

查看了别人的解决方法,的确使用的是 XSSFWorkbook 等方法创建的,在仔细查看有问题的EXCEL后发现,不是后面几个字段不显示,而是字段太长了显示不全,导致如此问题的代码如下:

sysOuSheet.setDefaultColumnWidth(4352); // 设置默认列宽
sysOuSheet.setColumnWidth(0, 12032); //第一列列宽
sysOuSheet.setColumnWidth(1, 12032); //第二列列宽
sysOuSheet.setColumnWidth(2, 12032); //第三列列宽

之所以设置4352,是因为看到别的文章说是要以256为倍数的字节进行设置,但更改为10即可解决。应该是设定特定的列数是需要以256为倍数来设置(setColumnWidth),但统一的不用。更改成以下即可:

sysOuSheet.setDefaultColumnWidth(10); // 设置默认列宽

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要将使用 Apache POI 3.14 版本导出的 Excel 文件设置在 `response` 中,确保您已经添加了正确的依赖项。然后,您可以按照以下步骤进行操作: 1. 导入所需的类: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.IOException; ``` 2. 创建一个新的 Java 方法,并将 `HttpServletResponse` 对象作为参数传入: ```java public void exportExcel(HttpServletResponse response) { Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Sheet1"); // 在这里添加您的数据和样式 // ... // 设置响应头部信息 response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setHeader("Content-Disposition", "attachment; filename=output.xlsx"); // 将工作簿写入响应流中 try (ServletOutputStream outputStream = response.getOutputStream()) { workbook.write(outputStream); workbook.close(); outputStream.flush(); } catch (IOException e) { e.printStackTrace(); } } ``` 3. 在方法中,您可以根据需要添加数据和样式到工作表中。 4. 设置响应的内容类型为 `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`,这将告诉浏览器它是一个 Excel 文件。然后,设置 Content-Disposition 头部信息为 "attachment; filename=output.xlsx",这将指示浏览器将文件作为附件下载。 5. 最后,将工作簿写入到 `response` 的输出流中,并在完成后刷新输出流。 请注意,在使用完工作簿后,务必调用 `close()` 方法来释放资源。 您可以在需要导出 Excel 的地方调用 `exportExcel(response)` 方法,其中 `response` 是您从 servlet 或控制器中获取到的 `HttpServletResponse` 对象。 希望这可以解决您的问题!如有任何疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值