java使用EasyExcel导入导出excel

使用alibab的EasyExce完成导入导出excel

一、准备工作

1、导包


    org.apache.poi
    poi
    3.17

    org.apache.poi
    poi-ooxml-schemas
    3.17

    org.apache.poi
    poi-ooxml
    3.17

    com.alibaba
    easyexcel
    2.1.7

二、了解注解

1、常用注解

字段注解 类注解 @ColumnWith(列宽) @ColumnWidth(全局列宽) @ExcelProperty(字段配置) @HeadFontStyle(头样式) @HeadRowHeight(标题高度) @ContentFontStyle(内容字体样式) @ContentRowHeight(内容高度)

2、@ExcelProperty注解

必要的一个注解,注解中有三个参数value,index分别代表列明,列序号
value和index只能二选一,通常不用设置converter
1.value 通过标题文本对应
2.index 通过文本行号对应

@ExcelProperty(value = "编号", index = 0)
private Long id;

3、@ColumnWith注解

设置列宽度,只有一个参数value,value的单位是字符长度,最大可以设置255个字符,因为一个excel单元格最大可以写入的字符个数就是255个字符

public class ImeiEncrypt {
    @ColumnWidth(value = 255) //excel单个单元格最大长度255
    private String message;
}

4、@ContentFontStyle注解

用于设置单元格内容字体格式的注解

参数 含义 fontName 字体名称 fontHeightInPoints 字体高度 italic 是否斜体 strikeout 是否设置删除水平线 color 字体颜色 typeOffset 偏移量 underline 下划线 bold 是否加粗 charset 编码格式

5、@ContentStyle注解

设置内容格式注解

参数 含义 dataFormat 日期格式 hidden 设置单元格使用此样式隐藏 locked 设置单元格使用此样式锁定 quotePrefix 在单元格前面增加`符号,数字或公式将以字符串形式展示 horizontalAlignment 设置是否水平居中 wrapped 设置文本是否应换行。将此标志设置为true通过在多行上显示使单元格中的所有内容可见 verticalAlignment 设置是否垂直居中 rotation 设置单元格中文本旋转角度。03版本的Excel旋转角度区间为-90°90°,07版本的Excel旋转角度区间为0°180° indent 设置单元格中缩进文本的空格数 borderLeft 设置左边框的样式 borderRight 设置右边框样式 borderTop 设置上边框样式 leftBorderColor 设置左边框颜色 rightBorderColor 设置右边框颜色 topBorderColor 设置上边框颜色 bottomBorderColor 设置下边框颜色 fillPatternType 设置填充类型 fillBackgroundColor 设置背景色 shrinkToFit 设置自动单元格自动大小

6、@HeadFontStyle注解

用于定制标题字体格式

参数 含义 fontName 设置字体名称 fontHeightInPoints 设置字体高度 italic 设置字体是否斜体 strikeout 是否设置删除线 color 设置字体颜色 typeOffset 设置偏移量 underline 设置下划线 charset 设置字体编码 bold 设置字体是否加粗

7、ExcelIgnore注解

不将该字段转换成Excel

三、编码

1、映射实体类—-例子

package com.pingou.admin.bean.param;

import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

@Data
@ContentRowHeight(35) //文本行高度
@HeadRowHeight(40)    //标题高度
@ColumnWidth(40)
public class OrderExcel {
    //设置excel表头名称
    @ExcelProperty(value = "编号", index = 0)
    private Long id;
    @DateTimeFormat("yyyy年MM月dd日HH时mm分ss秒")
    @ExcelProperty(value = "创建时间", index = 1)
    private Date createTime;
}

以上是简单的举例,如果有更多属性自己逐个写就好,然后塞进该实体类就好~

java使用EasyExcel导入导出excel

2、生成excel

public void excel() {
        //欲导出excel的数据结果集
        List excel = new ArrayList<>();
        //省略 向结果集里插入数据的操作

        //UUID生成唯一name
        String name = UUID.randomUUID().toString().replaceAll("-", "") + ".xlsx";
        //实现excel写的操作

        //1 设置写入文件夹地址和excel文件名称
        String filename = "/路径" + name;
        JSONObject json = new JSONObject();
        try {
            // 2 调用easyexcel里面的方法实现写操作
            // write方法两个参数:第一个参数文件路径名称,第二个参数实体类class
            EasyExcel.write(filename, OrderExcel.class).sheet("名字").doWrite(excel);
            //上传到fastdfs上 不上传的话只有本机可以找到,在上面路径下生成excel
            File file = new File(filename);
            String path = fastDFSClient.upload(new FileInputStream(file), name, null);
            path = (this.fastdfsDomain + path);
            json.put("url", path);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            new File(filename).delete();
        }
    }

以上,就生成完毕了!

java使用EasyExcel导入导出excel

四、结果

java使用EasyExcel导入导出excel

豁~搞定

java使用EasyExcel导入导出excel

Original: https://www.cnblogs.com/pkkyh/p/14771249.html
Author: 迷途者寻影而行
Title: java使用EasyExcel导入导出excel

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/575749/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 线程池系列一:线程池原来是个外包公司,打工人我悟了

    我们在工作中经常用到线程池,线程池(Thread Pool)是一种基于池化思想管理线程的工具。 线程的作用是处理任务,而池则是帮助我们实现资源的重复利用和管理。线程池就是帮助我们异…

    数据库 2023年6月6日
    088
  • Dockerfile创建apache镜像(alpine)

    alpine系统 alpine系统 alpine系统是什么 alpine系统的特点 alpine镜像下载 alpine国内源 alpine基础命令 服务管理 关闭系统 docker…

    数据库 2023年6月14日
    0125
  • Gorm 的黑魔法

    开发过程中,看到同事的代码写了这么一段: db = db.Session(&gorm.Session{Context: db.Statement.Context}).Fir…

    数据库 2023年6月9日
    090
  • 精心总结十三条建议,帮你创建更合适的MySQL索引

    上篇文章讲到使用MySQL的Explain命令可以分析SQL性能瓶颈,优化SQL查询,以及查看是否用到了索引。 我们都知道创建索引可以提高查询效率,但是究竟如何创建索引呢? [En…

    数据库 2023年5月24日
    088
  • Java百度地图经纬度纠偏

    在国内使用电子地图获取到的经纬度都不是真实的经纬度,而是经过一定的算法在真实的经纬度上添加了一个偏移量,且不同的地图有不同的算法。现在告诉大家在java中怎样对百度地图进行纠偏,主…

    数据库 2023年6月9日
    074
  • synchronized 是可重入锁吗?为什么?

    什么是可重入锁? 若一个程序或子程序可以”在任意时刻被中断然后操作系统调度执行另外一段代码,这段代码又调用了该子程序不会出错”,则称其为可重入(reentr…

    数据库 2023年6月16日
    085
  • python 学习笔记(十二)–Django 基本知识点小结

    构造函数格式: 作用: 向客户端浏览器返回相应,同时携带响应体内容。 参数: –content:表示返回的内容。 –status_code:返回的HTTP响…

    数据库 2023年6月16日
    065
  • 代码随想录-数组篇

    上次刷没刷完整,和李哥做字节的题感觉先前刷的题白刷了,故打算从头到尾完整走一遍。 二分法 1-1.二分查找 力扣题目链接 给定一个 n 个元素有序的(升序)整型数组 nums 和一…

    数据库 2023年6月14日
    099
  • MySQL 数据库

    内容概要 数据演变 数据存储发展 数据库类型 SQL与NoSQL的由来 下载安装MySQL MySQL文件目录 系统服务 密码相关 8.0版本的小问题 基本SQL语句 数据库的增删…

    数据库 2023年5月24日
    069
  • JUC学习笔记(五)

    创建线程的方法-一种是通过创建 Thread 类,另一种是通过使用 Runnable 创建线程。但是,Runnable 缺少的一项功能是,当线程终止时(即 run()完成时),我们…

    数据库 2023年6月6日
    0119
  • 三分钟图解事务隔离级别,看一遍就懂

    前文说过,”锁” 是数据库系统区别于文件系统的一个关键特性,其对象是 事务,用来锁定的是数据库中的对象,如表、页、行等。锁确实提高了并发性,但是却不可避免地…

    数据库 2023年5月24日
    0106
  • MySQL45讲之主备数据一致性

    本文主要介绍 MySQL 主备数据同步的重要日志 binlog 的三种格式,和双 M 结构的循环复制问题。 binlog三种格式 1. statement格式 直接存储了执行的 S…

    数据库 2023年5月24日
    087
  • 数据库多表查询 联合查询 增删改查

    插入 方式一 语法: insert into 表名 (字段名,…) values (值,…); 特点: 1、要求值的类型和字段的类型要一致或兼容 2、字段的个数和顺序不一定…

    数据库 2023年6月16日
    0136
  • 事务

    事务 *事务的简介 事务是一组操作的集合,这是一个不可分割的工作单元。事务将向整个系统提交或取消操作请求。这些操作只能同时成功和失败。 [En] A transaction is …

    数据库 2023年5月24日
    0102
  • 小公司比较吃亏的两道微服务面试题

    其实选择工作的时候,很多技术牛人都会选择一些小而美的公司,技术全面,能够以一个更全面的视角看整个公司的运作,人和人之间的相处也很简单。但是,有两道微服务的面试题,小公司的朋友们会比…

    数据库 2023年6月6日
    0117
  • Java并发

    Java并发 JAVA技术交流群:737698533 CAS compare and swap 比较并交换,cas又叫做无锁,自旋锁,乐观锁,轻量级锁 例如下面的代码,如果想在多线…

    数据库 2023年6月16日
    070
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球