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

一、准备工作

1、导包

<!-- poi 相关-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
<!-- esayexcel 2.1.7 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.7</version>
</dependency>

二、了解注解

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;
}

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

2、生成excel

public void excel() {
//欲导出excel的数据结果集
List<OrderExcel> 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的更多相关文章

  1. Java利用POI导入导出Excel中的数据

         首先谈一下今天发生的一件开心的事,本着一颗android的心我被分配到了PB组,身在曹营心在汉啊!好吧,今天要记录和分享的是Java利用POI导入导出Excel中的数据.下面POI包的下载地 ...

  2. java struts jxl 导入导出Excel(无模板)

    jar包: import javax.servlet.http.HttpServletResponse; import java.io.OutputStream; import java.io.Fil ...

  3. .Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) 通过MVC控制器导出导入Excel文件(可用于java SSH架构)

    .Net MVC  导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) [原文地址] 通过MVC控制器导出导入Excel文件(可用于java SSH架构)   public cl ...

  4. 导入导出Excel的Java工具类ExcelUtil

    在编写ExcelUtil之前,在网上查了一些资料.java中用来处理Excel的第三方开源项目主要就是POI和JXL.poi功能强大,但是比较耗资源,对于大数据量的导入导出性能不是太好:jxl功能简单 ...

  5. Java基于注解和反射导入导出Excel

    代码地址如下:http://www.demodashi.com/demo/11995.html 1. 构建项目 使用Spring Boot快速构建一个Web工程,并导入与操作Excel相关的POI包以 ...

  6. 导入导出Excel工具类ExcelUtil

    前言 前段时间做的分布式集成平台项目中,许多模块都用到了导入导出Excel的功能,于是决定封装一个ExcelUtil类,专门用来处理Excel的导入和导出 本项目的持久化层用的是JPA(底层用hibe ...

  7. jxl导入/导出excel

    1.jxl导入/导出excel案例,黏贴即可运行 package junit.test; import java.io.File; import java.io.IOException; import ...

  8. jxl导入/导出excel(网上的案例)

    jxl导入/导出excel 1.jxl导入/导出excel案例,黏贴即可运行 package junit.test; import java.io.File; import java.io.IOExc ...

  9. 导入导出Excel文件

    搭建环境 先新建web project ,然后Add Struts Capabilties: 下载导入导出Excel所需的jar包: poi-3.8-20120326.jar包  :  http:// ...

随机推荐

  1. 2019 GDUT Rating Contest II : Problem C. Rest Stops

    题面: C. Rest Stops Input file: standard input Output file: standard output Time limit: 1 second Memory ...

  2. P2089_烤鸡(JAVA语言)

    题目背景 猪猪hanke得到了一只鸡 题目描述 猪猪Hanke特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke吃鸡很特别,为什么特别呢?因为他有10种配料(芥末.孜然等),每种配料可以放1-3克, ...

  3. Android学习之探究Fragment

    •碎片是什么 Fragment是一种可以嵌入在活动中的UI片段,能够让程序更加合理和充分地利用大屏幕的空间: 出现的初衷是为了适应大屏幕的平板电脑,可以将其看成一个小型Activity,又称作Acti ...

  4. 20182217_刘洪宇 后门原理与实践 EXP2

    1.后门概念 后门就是不经过正常认证流程而访问系统的通道. 哪里有后门呢? 编译器留后门 操作系统留后门 最常见的当然还是应用程序中留后门 还有就是潜伏于操作系统中或伪装为特定应用的专用后门程序. - ...

  5. redis setNx原子锁

    https://github.com/suqi/rlock/blob/master/rlock.py 保持逻辑并发情况不产生多次结果 常用于下单,钱包,抢购,秒杀等场景 1 LOCK_TIMEOUT ...

  6. Spring Cloud 升级之路 - 2020.0.x - 2. 使用 Undertow 作为我们的 Web 服务容器

    本项目代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford 在我们的项目中,我 ...

  7. 人多力量大vs.两个披萨原则,聊聊持续交付中的流水线模式

    人多力量大vs.两个披萨原则,聊聊持续交付中的流水线模式 在前面5期文章中,我们分别详细介绍了持续交付体系基础层面的建设,主要是多环境和配置管理,这些是持续交付自动化体系的基础,是跟我们实际的业务场景 ...

  8. Dynamics CRM各个版本的元数据浏览解决方案

    https://docs.microsoft.com/en-us/dynamics365/customerengagement/on-premises/developer/browse-your-me ...

  9. 【ProLog - 3.0 进阶:递归】

    [ProLog中的递归] 如果递归中的一个或多个规则引用谓词本身,则对该谓词使用"递归"定义 在使用时,这往往像一条食物链或者族谱的构成(A的爸爸的爸爸,即A的爷爷,是A的长辈) ...

  10. OO第三单元小结

    目录 JML理论基础 JML工具链 openjml使用 openjml总结 jmlunitng使用 代码分析 第一次作业 第二次作业 第三次作业 测试&bug分析 黑盒测试 白盒测试(Juni ...