EasyExcel导出Excel设置单元格文本格式(亲测有效) 您所在的位置:网站首页 单元格格式设置为文本为什么还是不显示 EasyExcel导出Excel设置单元格文本格式(亲测有效)

EasyExcel导出Excel设置单元格文本格式(亲测有效)

2024-06-18 03:48| 来源: 网络整理| 查看: 265

EasyExcel的maven依赖, 注意版本问题, 我的是3.0+的版本

com.alibaba easyexcel 3.0.5

下面是一开始的代码, 是不生效的, 查了好多都是这么设置的, 我也是这么写的但是就是不生效, 然后查了资料好多也说是注册写处理器必须是一个, 不能是多个, 因为我的是注册两个写处理器, 然后我就去掉了一个处理, 但是TMD还是不生效, 后来查了资料, 试了好几次, 终于可以生效了, 下面的写法应该是2.0版本的写法, 因为我的是3.0+, 没有验证这个2.0+是否生效, 就不多说了.

public class ExcelCellWriteHandler implements CellWriteHandler { @Override public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { // 2.0 设置单元格为文本 Workbook workbook = writeSheetHolder.getSheet().getWorkbook(); CellStyle cellStyle = workbook.createCellStyle(); DataFormat dataFormat = workbook.createDataFormat(); cellStyle.setDataFormat(dataFormat.getFormat("@")); cell.setCellStyle(cellStyle); } }

生效解决方法1: 在作用字段或者类上作用@ContentStyle注解, 然后设置属性dataFormat = 49

/** * 直接作用到类上, 这种比较快捷 * 看类BuiltinFormats定义的数组, 数组定义了所有的格式, * Excel单元格的文本格式就是对应数组里的"@"元素值, "@"元素值索引为49, 所以设置dataFormat = 49 */ @ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.LEFT, dataFormat = 49)

解决方法2: 看下面代码吧, 重写下面任意两个其中的一个方法就可以了, 写入注册几个写处理器都是可以的, 然后就可以导出试一下了.

public class ExcelCellWriteHandler implements CellWriteHandler { @Override public void afterCellDispose(CellWriteHandlerContext context) { // 3.0 设置单元格为文本 WriteCellData cellData = context.getFirstCellData(); WriteCellStyle writeCellStyle = cellData.getOrCreateStyle(); DataFormatData dataFormatData = new DataFormatData(); dataFormatData.setIndex((short) 49); writeCellStyle.setDataFormatData(dataFormatData); } @Override public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { // 3.0 设置单元格为文本 Workbook workbook = writeSheetHolder.getSheet().getWorkbook(); DataFormat dataFormat = workbook.createDataFormat(); for (WriteCellData writeCellData : cellDataList) { WriteCellStyle writeCellStyle = writeCellData.getOrCreateStyle(); DataFormatData dataFormatData = new DataFormatData(); dataFormatData.setIndex(dataFormat.getFormat("@")); writeCellStyle.setDataFormatData(dataFormatData); } } }

导出的Excel就是文本的格式了

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有