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

news/2024/11/24 9:04:38/

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就是文本的格式了

在这里插入图片描述


http://www.ppmy.cn/news/466154.html

相关文章

excel不能复制粘贴怎么回事

excel文件不能复制粘贴&#xff0c;可能是由于excel文件设置了保护的原因&#xff0c;就是那个【工作表保护】 工作表保护&#xff0c;可以限制任何人对excel文件的编辑操作。设置工作表保护时有很多选项可以选择 如果excel文件不能复制粘贴&#xff0c;可以尝试撤销工作表保护…

合并 Excel 的多张工作表Sheet报错:无法在此处粘贴此内容

文章目录 问题解决 问题 将左侧表格中一个sheet的内容复制到右侧表格中的一个sheet中出现报错&#xff1a; 无法在此处粘贴此内容&#xff0c;因为 复制 区域和粘贴区域的大小不同。解决 最简答的办法&#xff1a;准备一个txt文档作为复制的中介&#xff0c; 这样再复制故去就…

”excel 无法粘贴信息,原因是复制区域与粘贴区域形状不同“解决方法

excel 无法粘贴信息,原因是复制区域与粘贴区域形状不同 格式&#xff0c;有无合并单元格&#xff0c;单元格状态右击&#xff0c;把锁定去掉等各种方法都尝试过&#xff0c;还是无法解决问题。 后来在一个帖子里看到一个大神的解答&#xff0c;豁然开朗&#xff0c;试之&#…

按键精灵之自动复制粘贴到Excel单元格中

目录 1. 简介&#xff1a;2.应用场景&#xff1a;3.源文件&#xff1a; 1. 简介&#xff1a; 本文将分享按键精灵&#xff08;Q语言&#xff09;的一个脚本使用&#xff0c;自动实现从输出窗口A中&#xff0c;将输出的数据内容复制&#xff0c;然后粘贴到事先设置好的Excel表格…

金蝶实现EXCEL复制粘贴功能

金蝶K3 WISE从14.0开始可以从EXCEL中直接复制数据粘贴到单据当中&#xff0c;可以说比以前一个个手动输入方便了很多.如果有多个字段需要同时复制的话&#xff0c;就不支持了&#xff0c;只能一列一列复制&#xff0c;有点麻烦。 为了操作方便或满足以前版本没有复制功能&…

EasyExcel 设置单元格文本格式失效

这是我自定义实现的代码 public class CustomerCellWriteRowHandler implements CellWriteHandler {List<ExcelLevelModel> levelModels;public CustomerCellWriteRowHandler(List<ExcelLevelModel> levelModels) {this.levelModels levelModels;}Overridepublic…

jxls--使用模版导出excel,单元格无法自动计算问题解决

在项目中使用jxls导出excel &#xff0c;coding可以很少很少&#xff0c;excel报表格式可以很复杂同时也可以有很漂亮的样式&#xff0c;不再用网页导出这种很恶的方式来面对头痛的格式问题。 jxls也是通过poi的api来操作excel&#xff0c;利用定义好格式的模版再加上一些标签语…

使用easyexcel做数据校验错误返回excel表格批注+背景

使用easyexcel做数据校验错误返回excel表格批注背景 效果入这样 想要实现,每行错误单元格,写入错误批注还是很难得,因为easyexcel在2.2.0.bate1 版本才支持写入批注. 所有还没研究能不能实现. 现在按照模板只能实现了单个(又研究了下是可以批量的) package com.alibaba.easy…