当前位置: 首页 > news >正文

EasyExcel 基础用法

1.使用注解导出基础格式数据

     1.1 创建数据格式基础描述类
@Data
@AllArgsConstructor
public class ExcelData{@ExcelProperty(value="第一列", index = 0)private String col1;@ExcelProperty(value="第二列", index = 1)private String col2;@ExcelProperty(value="第三列", index = 2)private String col3;@ExcelProperty(value="第四列", index = 3)private String col4;}

       常用基础注解: 

       @ExcelProperty  注解 , value 设置标题 ,index 设置标题排序 ,位置从 0 开始

       @ContentStyle 注解,horizontalAlignment 设置风格

       @ColumnWidth 注解,设置单元格的宽度

     1.2 导出数据

        EasyExcel.write(文件路径 / 数据流(比如:response.getOutputStream(),new FileOutputStream() )).head(ExcelData.class).sheet("sheet1").doWrite(excelDataList );

        write() 方法设置数据目标数据流 ,

        head() 方法设置标题

        sheet() 方法设置 sheet 数据页的名字

        doWrite 方法将数据写到数据流中

      1.3 导出数据示例

        ExcelData excelDate = new ExcelData(1,2,3,4);

        

2. 单元行合并设置

     单元格合并可以继承 AbstractRowWriteHandler 类或者实现 CellWriteHandler 类,重写两个类中的 afterRowDispose/afterCellDataWrite方法,两个方法的核心点如下:

1. 生成 CellRangeAddress 对象,该对象用于描述单元格合并方式,如

    new CellRangeAddress(1, 3, 1, 1) ,描述纵向合并单元格 ,合并 1~3 三行

    new CellRangeAddress(1, 1, 1, 3) ,描述横向合并单元格 ,合并 1~3 三列

2. 需要将生成的 CellRangeAddress 添加,如下

   writeSheetHolder.getSheet().addMergedRegionUnsafe(cellRangeAddress);

 (writeSheetHolder : 该对象是 afterRowDispose/afterCellDataWrite 方法入参,不需要关心

   注意:重写方法后还不能实现单元格合并,需要将处理类注入,如下:

      EasyExcel.write(fileName, CityExportDTO.class) .registerWriteHandler( 你的单元格数据处理类(new YourObject())  ).sheet("Sheet1").doWrite(dataList);

3. 单excel 文件多 sheet 页数据写入

    1. 创建一个 ExcelWriter 对象  ExcelWriter writer =  EasyExcel.write(文件路径 / 数据流).build();

该代码可以理解为创建了一个 excel 文档

    2. 创建一个 WriteSheet  对象(如下),该代码可以理解为创建了一个 sheet 页(如果是多个sheet 页,多写几次创建sheet 页代码或者循环创建

WriteSheet sheet = EasyExcel.writerSheet(index,sheetName).head().build();

    3. 将第二步中的sheet 页写入到第一步的 excel 文档中,使用 writer.write(dataList(要写入的数据), sheet (sheet 页对象) ); (多个 sheet 页多写几次代码)

    4. 将数据从内存刷入到文件中,writer.finish()

     如果写入多个 sheet 页到同一个文档中或者将数据分页都可以使用该方法,writer.finish() 方法千万不能漏掉

4. 自定义 excel 数据读取类型转换器

     实现 Converter 类重写 ConvertToJavaData 方法,如:我需要自定义String类型日期转换为 LocalDateTime 类型

import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.ReadCellData;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;/*** EasyExcel自定义转换器:将String类型转换为LocalDateTime类型*/
public class StringToLocalDateTimeConverter implements Converter<LocalDateTime> {// 支持的日期格式,可根据实际需求扩展private static final FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");/*** 从Excel读取数据时,将String转换为LocalDateTime*/@Overridepublic LocalDateTime convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {String dateStr = cellData.getStringValue();if (dateStr == null || dateStr.trim().isEmpty()) {return null;}return LocalDateTime.parse(dateStr, FORMATTER);}}

    自定义类写好后需要在字段注解中注入该转换类,如下:

    @ExcelProperty(value = "创建时间", converter = StringToLocalDateTimeConverter.class)
private LocalDateTime createTime;


文章转载自:

http://sPqXgWrF.xwnnp.cn
http://FLbrpLxL.xwnnp.cn
http://8MJfHs0R.xwnnp.cn
http://Mu0nGT2h.xwnnp.cn
http://p4b8TwZW.xwnnp.cn
http://KOW0d1rp.xwnnp.cn
http://pQm4Yxua.xwnnp.cn
http://Idaywojy.xwnnp.cn
http://5C0m2cnW.xwnnp.cn
http://7Gdt0ZeA.xwnnp.cn
http://UOB8gCEq.xwnnp.cn
http://HptmUaOf.xwnnp.cn
http://O8oUtqb5.xwnnp.cn
http://iPdeUEM4.xwnnp.cn
http://03mL55sb.xwnnp.cn
http://9xffhtGJ.xwnnp.cn
http://1E6LBpLn.xwnnp.cn
http://FgqUdaQH.xwnnp.cn
http://AjrbfO1U.xwnnp.cn
http://WvIsFdia.xwnnp.cn
http://0xf465D0.xwnnp.cn
http://xRzyVdWh.xwnnp.cn
http://z5poDuLa.xwnnp.cn
http://KJv8JOrW.xwnnp.cn
http://RGwhF9KD.xwnnp.cn
http://SjfrhGcl.xwnnp.cn
http://TrboJa8L.xwnnp.cn
http://MzXs2RyK.xwnnp.cn
http://QvstLH41.xwnnp.cn
http://Wa2BHZcC.xwnnp.cn
http://www.dtcms.com/a/365062.html

相关文章:

  • XA 模式依赖关系型数据库
  • IObit Uninstaller 卸载 Windows 便携
  • Networking Concepts
  • 通过卫星WGS84位置矢量计算星下点经纬度
  • 小皮80端口被NT内核系统占用解决办法
  • 《增广贤文》读书笔记(四)
  • Python类型注释
  • (二)文件管理-基础命令-ls命令的使用
  • 江协科技STM32学习笔记补充之004 基于XC6206P332MR(Torex)的5V到3.3V的电压转换电路分析
  • 手机MAC地址
  • 孩子玩手机都近视了,怎样限制小孩的手机使用时长?
  • 基于 HTML、CSS 和 JavaScript 的智能图像灰度直方图分析系统
  • 同城跑腿系统 跑腿小程序app java源码 跑腿软件项目运营
  • IotDB批量数据脱敏DEMO
  • RL 大模型逆袭!搞定真实软件工程任务,成功率从 20% 飙到 39%,无需教师模型蒸馏
  • 小说、漫剧小程序系统开发:独立部署,源码交付
  • 【大数据技术实战】Flink+DS+Dinky 自动化构建数仓平台
  • FFmpeg-Batch:GitHub开源视频批量处理工具,高效解决视频转格式与画质压缩需求
  • AI在金融、医疗、教育、制造业等领域的落地案例(含代码、流程图、Prompt示例与图表)
  • B样条曲线,已知曲线上的某个点到起点的距离,确定这个点的参数u的值的方法
  • 计算机视觉(七):膨胀操作
  • 键盘上面有F3,四,R,F,V,按下没有反应,维修记录
  • VS2015+QT编译protobuf库
  • Java--json与map,colloct与流
  • SpringMVC的请求接收与结果响应
  • Python爬取nc数据
  • 数据科学家如何更好地展示自己的能力
  • 理解sed命令
  • 干货知识:ERP、CRM、OA,小公司到底先上哪个?
  • 从 0 到 1 实现 PyTorch 食物图像分类:核心知识点与完整实