基于XSSFWorkbook 实现POI设置指定列为文本格式
写在前面
需求是通过XSSFWorkbook来实现Excel导出数据功能的.并限制文件的某一列单元格格式为文本格式.作为开发来说,原本认为这是个很简单的需求,但实际搞起来…
第一次修改
把某一列作为一个整体进行处理,代码如下:
// 创建workbook工作薄
XSSFWorkbook xssfWorkbook= new XSSFWorkbook();
// 样式
XSSFCellStyle commonStyle = xssfWorkbook.createCellStyle();
// 设置为文本格式
DataFormat format = xssfWorkbook.createDataFormat();
commonStyle.setDataFormat(format.getFormat("@"));
XSSFSheet sheet = wb.createSheet();
// 对单独某一列进行样式赋值,第一个参数为列数(从0开始),第二个参数为样式 所有列的话,循环列进行操作即可
sheet.setDefaultColumnStyle(i, style);
搞完之后,导出文件查看列格式
这同一个列 ,有数据的和没数据的单元格格式咋还不一样了捏…,不说产品会不会满意了,我是不能接受的,继续改吧.
第二次修改
在导出数据的时候,有对应的循环添加数据,在那里面添加文本格式就行了.
// 设置为文本格式
DataFormat format = xssfWorkbook.createDataFormat();
commonStyle.setDataFormat(format.getFormat("@"));
// 在每一个单元格中添加此文本格式配置
// 循环获取行信息
for (int i = 0; i < list.size(); i++) {
Row tempRow = sheet.createRow(4 + i);
// 行中的列数据,
for (int i1 = 0; i1 < headerList.size(); i1++) {
// 获取有数据的单元格
Cell tempCell = tempRow.createCell(i1);
~~~ 其他业务处理,上面的也是原业务逻辑,自己没动,懒人一个~~~
// 设定文本格式
tempCell.setCellStyle(commonStyle);
}
}
导出文件,导出文件查看列格式
搞定!!
总结
导出Excel时候,指定列的单元格格式,需要注意整列的单元格格式是否一样,XSSFWorkbook 可以这样操作,HSSFWorkbook也是可以的,文本格式可以,数字格式,百分比格式也是可以的,POI可以,EasyExcel…暂时还没试,有时间搞下.