EasyExcel操作API与示例

1. maven

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.2.2</version>
        </dependency>

2. 注解

ExcelProperty    指定当前字段对应excel中的那一列。可以根据名字或者Index去匹配。不写,默认按顺序匹配
        value     名头名称
        index    字段与列数对应索引
        converter    字段转化器
ExcelIgnore    默认所有字段都会和excel去匹配,加了这个注解会忽略该字段
DateTimeFormat    日期转换,用String去接收excel日期格式的数据会调用这个注解。
        value  SimpleDateFormat格式方式 y(年) M(月 )d(日) h(时) m(分) s(秒)
        use1904windowing 是否使用1904windowing
NumberFormat    数字转换,用String去接收excel数字格式的数据会调用这个注解。
       value    DecimalFormat格式方式 ##.00
       roundingMode    取舍方式
ExcelIgnoreUnannotated    默认不加ExcelProperty 的注解的都会参与读写,加了不会参与
ColumnWidth    设置宽
        value    数值
ContentRowHeight    设置高
        value    数值
HeadRowHeight    设置头高
        value    数值

3. Excel读入

3.1 常用操作API

3.1.1 初始化方法

初始化获取Excel读取构造对象(ExcelReaderBuilder)

构造方法描述
EasyExcel.read()无参初始化,各属性由方法添加
EasyExcel.read(File file)文件来源 File,可分别设置对象class和监听器
EasyExcel.read(File file, ReadListener listener)
EasyExcel.read(File file, Class head, listener listener)
EasyExcel.read(String path)文件来源 FilePath,可分别设置对象class和监听器
EasyExcel.read(String path, ReadListener listener)
EasyExcel.read(String path, Class head, ReadListener listener)
EasyExcel.read(InputStream in)文件来源 InputStream,可分别设置对象class和监听器
EasyExcel.read(InputStream in, ReadListener listener)
EasyExcel.read(InputStream in, Class head, ReadListener listener)

3.1.2 操作方法

ExcelReaderBuilder对象操作方法,添加属性,获取Excel读取对象(ExcelReader),Sheet构造对象(ExcelReaderSheetBuilder)

功能方法描述
Excel属性设置
(ExcelReaderBuilder)
.head(T.class)添加 对象class
.file(File file)添加 文件,可以是File对象,文件路径,输入流
.registerReadListener(new MyListener())注册 读取监听器
.registerConverter(new MyConverter())注册转化器
.headRowNumber(1)设置头行数,默认为1
.autoTrim(true)设置是否去两端空格,默认为 true
.ignoreEmptyRow(true)设置忽略空行,默认为 true
.use1904windowing(true) 
.mandatoryUseInputStream(true)强制使用输入流
.excelType(ExcelTypeEnum.XLSX);设置类型,默认自动
.autoCloseStream(true)自动关流
.readCache(new MyReadCache())设置自定义缓存
.readCacheSelector(new MySelector())设置缓存选择器
.customObject(null) 
.password("") 
.xlsxSAXParserFactoryName("") 
ExcelReaderBuilder方法;
获取Excel属性设置
(ExcelReader)
.build()构建ExcelReader对象
.doReadAll()读取所有数据,可配置监听器读取
ExcelReaderBuilder方法;
获取sheet构造对象(ExcelReaderSheetBuilder)
.sheet()获取sheet构造器,
excelReader方法.readAll()读取所有数据,可配置监听器读取
.finish()关流 
.read(ReadSheet  readSheet )数据读取,参数是ReadSheet ,list,不定参
ExcelReaderSheetBuilder方法;
Sheet构造器属性添加
.headRowNumber(1)设置头行数,默认为1
 .head(T.class)设置实体类
.sheetNo(1)     设置 sheet 索引
.sheetName("")设置 sheet 名称
.registerReadListener(new MyListener())    注册监听器
.registerConverter(new MyConverter())注册转换器
.use1904windowing(true)                
.autoTrim(true);自动去两边空格
ExcelReaderSheetBuilder方法;
(数据读取)
 sheet.doRead();异步读取,在监听器中进行数据处理
 sheet.doReadSync();同步读取,返回结果集

 3.2 操作实例

//异步读取所有sheet数据,文件可为File,路径,输入流;不设置T.class时,监听器监听数据为List<map>结构,三个参数都可在方法中设置
EasyExcel.read(file,T.class,new MyListener()).doReadAll();
//异步读取所有sheet数据,可在sheet方法参数中指定sheet索引,sheet名称
EasyExcel.read(file,T.class,new MyListener()).sheet().doRead();
//同步读取所有sheet数据,返回list数据,可在sheet方法参数中指定sheet索引,sheet名称
List<Object> list = EasyExcel.read().sheet().doReadSync();
//读取数据的其他方式
ExcelReader excelReader = EasyExcel.read(fileName, T.class, new MyListener()).build();//构建Excel读取对象
        ReadSheet build = EasyExcel.readSheet(0).build();//构建Sheet读取对象
        excelReader.read(build);//读取数据
        excelReader.finish();//关流

4. Excel读入

4.1 常用操作API

4.1.1 初始化方法

初始化获取Excel写出构造对象(ExcelWriterBuilder)

构造方法描述
EasyExcel.write()无参初始化,各属性由方法添加
EasyExcel.write(File file)文件输出源File,文件路径,输出流,可设置class
EasyExcel.write(File file,Class head)
EasyExcel.write(String pathName)
EasyExcel.write(String pathName,Class head)
EasyExcel.write(OutputStream outputStream)
EasyExcel.write(OutputStream outputStream,Class head)

4.1.2 操作方法

ExcelWriterBuilder对象操作方法,添加属性,获取Excel读取对象(ExcelWriter),Sheet构造对象(ExcelWriterSheetBuilder)

各对象公共设置属性方法:

对象方法描述
Excel属性设置
(ExcelWriterBuilder)
.head(T.class)添加 对象class
.registerConverter(new MyConverter())注册转换器
.useDefaultStyle(true)是否使用默认样式
.automaticMergeHead(true)          .是否自动合并表头
.excelType(ExcelTypeEnum.XLSX)设置文件类型
.relativeHeadRowIndex(1)头行索引
 .includeColumnFiledNames(null)         导出列包含字段名集合
 .includeColumnIndexes(null)导出列包含索引集合
.excludeColumnFiledNames(null)导出列排除字段名集合
.excludeColumnIndexes(null)导出列排除索引集合
.registerWriteHandler(new MyWriteHandler());注入写出处理器
.needHead(true)是否需要表头
   

 各对象私有方法:

功能方法描述
Excel属性设置
(ExcelWriterBuilder)
  
.file(File file)添加 文件,可以是File对象,文件路径,输入流
.autoCloseStream(true)是否自动关流
.password("")设置密码
.inMemory(true)记忆
.writeExcelOnException(true)异常时写出
.withTemplate("")加载模板 
ExcelWriterBuilder方法;
获取Excel属性设置(ExcelWriter)
write.build(); 
ExcelWriterBuilder方法;
获取Sheet构造器(ExcelWriterSheetBuilder)
write.sheet(); 
ExcelWriter方法.write(List data, WriteSheet writeSheet)可添加WriteTable参数
.fill(Object data, WriteSheet writeSheet)可添加FillConfig参数
.finish();关流
.writeContext(); 
ExcelWriterSheetBuilder方法
属性添加
.sheetName() 
.sheetNo() 
ExcelWriterSheetBuilder方法
操作方法
.doFill(Object o);数据填充,可添加FillConfig参数
.doWrite(List data)数据写出,可添加WriteTable参数
ExcelWriterSheetBuilder方法.sheet.build()构建Excel写出对象(WriteSheet)
ExcelWriterSheetBuilder方法.sheet.table();获取表格构建对象(ExcelWriterTableBuilder)
可填参数 表格索引
ExcelWriterTableBuilder方法.build();        构建Excel表格对象(WriteTable)
.doWrite();数据写出
WriteSheet方法.getColumnWidthMap();获取列映射,set方法设置
.getSheetName();获取Sheet名,set方法设置
.getSheetNo();获取Sheet号,set方法设置
.getTableStyle();获取表样式,set方法设置
WriteTable方法.getTableNo();获取表格号,set方法设置
.getTableStyle();设置表格样式,set方法设置
   

 

4.3 操作实例

//操作方式1  数据导出,可导出到File,文件路径,输出流
EasyExcel.write(fileName, T.class).sheet("sheetName").doWrite(List<T> list);
//操作方式2 
ExcelWriter excelWriter = EasyExcel.write(fileName, T.class).build();
WriteSheet writeSheet = EasyExcel.writerSheet("模板").build();
    excelWriter.write(List list, writeSheet);
    excelWriter.finish();
//操作方式3  导出指定列数据
EasyExcel.write(fileName, T.class).includeColumnFiledNames(Set<String> columnFiledNames).sheet("sheetName")
        .doWrite(List<T> list);

注:更多实例点击查看 easyExcel官网

  • 31
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑重其事,鹏程万里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值