首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >EasyExcel导出excel设置单元格为文本格式解决方案【建议收藏】

EasyExcel导出excel设置单元格为文本格式解决方案【建议收藏】

作者头像
知识浅谈
发布2025-05-16 16:41:32
发布2025-05-16 16:41:32
1.4K00
代码可运行
举报
文章被收录于专栏:分享学习分享学习
运行总次数:0
代码可运行

🎈为什么要设置文本格式

在使用EasyExcel进行Excel模板导出时,我们发现导出的日期和大长度数字会自动转换为非文本格式。这可能导致数据在Excel中显示不正确,尤其是在空白单元格中输入日期时。因此,我们需要通过代码来指定这些单元格应被导出为文本格式。

🎈导入EasyExcel依赖

温馨提醒:这个有点多,请仔细看下去

代码语言:javascript
代码运行次数:0
运行
复制
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>3.3.2</version>
</dependency>

🎈设置单元格格式

代码语言:javascript
代码运行次数:0
运行
复制
public void genTitleExcel(HttpServletResponse response,String[] split){ //response 作为响应体,split作为excel中第一行数表头数据
    try {
        List<List<String>> head = new ArrayList<>();
        for (int i = 0; i < split.length; i++) {
            List<String> tmp = new ArrayList<>();
            tmp.add(split[i]);
            head.add(tmp);
        }
        //设置响应类型
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        //设置文件名并对其进行URL编码
        String fileName = URLEncoder.encode("模板文件","UTF-8").replaceAll("\\+","%20");
        response.setHeader("Content-Disposition","attachment;filename*=utf-8''"+fileName+".xlsx");
        ExcelWriterBuilder write = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new SheetWriteHandler(){
        private static final Integer COLUMN = 100;
        @Override
        public void beforeSheetCreate(WriteWorkbookHolder wbh,WriteSheetHolder wsh){
        	SheetWriteHandler.super.beforeSheetCreate(wbh,wsh);
        }
        @Override //这里设置单元格为文本格式
        public void afterSheetCreate(WriteWorkbookHolder wbh,WriteSheetHolder wsh){
        	for(int i=0;i<COLUMN;i++){
        		SXSSFSheet sheet = (SXSSFSheet)wsh.getSheet();
        		CellStyle cellStyle = wbh.getCacheWorkbook().createCellStyle();
        		//49为文本格式
        		cellStyle.setDataFormat((short)49);
        		sheet.setDefaultColumnStyle(i,cellStyle);
        	}
        }
        });
        write.head(head).sheet("Sheet1").doWrite(new ArrayList<>());
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}

上边代码中的cellStyle.setDataFormat((short)49); 表示的设置单元格的格式为文本类型。

🍚方案总结

以上就是关于EasyExcel导出excel设置单元格为文本格式的相关问题的解决方案,在使用这个解决方案之前我也使用过其他的ChatGpt,文心一言等大模型,提供的解决方法都差强人意,如果对您有用,还望动动小手三连一下,帮助更多用到的小伙伴。

大功告成,撒花致谢🎆🎇🌟,关注我不迷路,带你起飞带你富。 Writted By 知识浅谈

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🎈为什么要设置文本格式
  • 🎈导入EasyExcel依赖
  • 🎈设置单元格格式
  • 🍚方案总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档