🍁 作者:知识浅谈,CSDN签约讲师,CSDN博客专家,华为云云享专家,阿里云专家博主
📌 擅长领域:全栈工程师、爬虫、ACM算法,大数据,深度学习
💒 公众号:知识浅谈
🔥 微信:zsqtcyl 联系我领取福利
🤞EasyExcel导出excel设置单元格为文本格式🤞
🎈为什么要设置文本格式
在使用EasyExcel进行Excel模板导出时,我们发现导出的日期和大长度数字会自动转换为非文本格式。这可能导致数据在Excel中显示不正确,尤其是在空白单元格中输入日期时。因此,我们需要通过代码来指定这些单元格应被导出为文本格式。
🎈导入EasyExcel依赖
温馨提醒:这个有点多,请仔细看下去
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.3.2</version>
</dependency>
🎈设置单元格格式
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 知识浅谈