情景描述
今天使用Java进行Excel导出的使用到了Hutool的ExcelWriter功能进行导出。中间需要用到手动换行,网上找了很多资料,哪怕是用到bing的gpt,搜到的答案还是有点问题,好在最终看文档,找到了解决方案,这里记录一下。
表格Excel 手动换行
在导出Excel的时候,有点时候需要换行,使用Hutool导出的时候,其实只需要在换行的地方,添加字符串\r\n
就可以了。
但是随之带来的问题呢,就是在生成Excel导出之后呢,默认的还是在一行。但是双击点击单元格的时候,就变成了自动分行。问题就在这里了,如何实现,让其在下载下来之后,打开就带有自动换行呢,需要进行单独的设置。
设置分行
分行代码块如下
// 数据导出
// 合并单元格后的标题行,使用默认标题样式
ExcelWriter writer = ExcelUtil.getWriter(true); // new ExcelWriter(true);
// 一次性写出内容,使用默认样式
writer.setHeaderAlias(headerAlias1);
writer.write(columList,true);
//设置所有列为自动宽度,不考虑合并单元格
writer.autoSizeColumnAll();
// 设置手动换行
writer.getStyleSet().setWrapText();
writer.getHeadCellStyle().setWrapText(true);
response.setContentType("application/vnd.ms-excel;charset=utf-8");
//test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
String codedFileName = java.net.URLEncoder.encode("带车统计", "UTF-8");
response.setHeader("Content-Disposition","attachment;filename="+ codedFileName + ".xls");
writer.flush(response.getOutputStream());
writer.autoSizeColumnAll(); // 自适应长度
// 关闭writer,释放内存
writer.close();
通过设置
writer.autoSizeColumnAll(); 方法设置,让单元格自动换行。
如果表头也需要换行,则需要设置表头的换行,可以使用
writer.getHeadCellStyle().setWrapText(true);来让表头换行。
这样,导出来的文件就能实现换行功能了。