爱码网专注于资源免费下载

若依导出excel设置列格式为文本

一.问题场景

使用若依框架在导出Excel模板时要填写身份证号,但是身份证号是个很长的数字,填写时会变成科学计数法,这就有bug了。如下图所示,我输入的值是112233202409291234,回车后变成了科学计数法,值也变成了112233202409291000,这样肯定是不对的。当然我们可以在输入前把单元格格式设置成文本,但是这对于用户来说是不愿意的。

若依导出excel设置列格式为文本-第1张图片

二.解决方案

修改ExcelUtil类的writeSheet方法,增加如下内容:

若依导出excel设置列格式为文本-第2张图片

放上代码,方便复制粘贴:

// 将所有的单元格类型都设置为文本
CellStyle cellStyle = this.wb.createCellStyle();
DataFormat dataFormat = this.wb.createDataFormat();
cellStyle.setDataFormat(dataFormat.getFormat("@"));
for (int i = 0; i < fields.size(); i++) {
    sheet.setDefaultColumnStyle(i, cellStyle);
}

三.实现思路

利用POI中Sheet类的setDefaultColumnStyle(int var1, CellStyle var2)方法,其中入参var1表示列索引。首先我们知道导出的excel模板有多少列,即fielss.size()方法,然后利用setDefaultColumnStyle()方法把每一列都设置成文本格式。

效果如图,单元格样式已经变成了文本格式!

若依导出excel设置列格式为文本-第3张图片

上面是设置所有的单元格,如果只想设置某一个单元格为文本的话,可以使用下面的方法:

CellStyle cellStyle = wb.createCellStyle();
DataFormat dataFormat = wb.createDataFormat();
cellStyle.setDataFormat(dataFormat.getFormat("@"));
cell.setCellStyle(cellStyle);

本文链接:https://www.icode1024.com/article/292.html

网友评论