EasyExcel的maven依赖, 注意版本问题, 我的是3.0+的版本
<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.0.5</version>
</dependency>
下面是一开始的代码, 是不生效的, 查了好多都是这么设置的, 我也是这么写的但是就是不生效, 然后查了资料好多也说是注册写处理器必须是一个, 不能是多个, 因为我的是注册两个写处理器, 然后我就去掉了一个处理, 但是TMD还是不生效, 后来查了资料, 试了好几次, 终于可以生效了, 下面的写法应该是2.0版本的写法, 因为我的是3.0+, 没有验证这个2.0+是否生效, 就不多说了.
public class ExcelCellWriteHandler implements CellWriteHandler {@Overridepublic 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 {@Overridepublic 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);}@Overridepublic void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<WriteCellData<?>> 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就是文本的格式了