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 {
@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<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就是文本的格式了文章来源:https://www.toymoban.com/news/detail-569230.html
文章来源地址https://www.toymoban.com/news/detail-569230.html
到了这里,关于EasyExcel导出Excel设置单元格文本格式(亲测有效)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!