1.简介
官网:EasyExcel官方文档 – 基于Java的Excel处理工具 | Easy Excel
2.案例
2.1 实现的效果
效果图如下:
2.2实现步骤
三种情景,主要是表头和数据有区别,简列实现步骤如下:
2.3 具体实现
2.3.1前置-依赖导入
com.alibaba
easyexcel
3.3.2
org.apache.poi服务器托管网
poi
4.1.2
org.apache.poi
poi-ooxml
4.1.2
org.apache.poi
poi-ooxml-schemas
4.1.2
2.3.2简单列表导出excel文件
1.创建实体如下:
@Data
public class Order {
/** 订单ID*/
@ExcelProperty("订单ID")
private String orderId;
/** 总价*/
@ExcelProperty("总价")
private BigDecimal totalFee;
/** 创建时间*/
@ExcelProperty("创建时间")
private Date createTime;
/** 商品名称*/
@ExcelProperty("商品名称")
private String goodsName;
/** 商品件数*/
@ExcelProperty("商品件数")
private int num;
}
2.controller写导出方法,这个是最简单的导出
@GetMapping("/exp服务器托管网ortSimpleExcel")
public void exportSimpleExcel(HttpServletResponse response) throws Exception{
// 设置response头信息-文件名使用当前时间
setHeader(response);
// 获取excel数据
List data = generateOrders();
// 导出数据
exportExcel(response,data);
}
private void setHeader(HttpServletResponse response) {
response.reset();
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment; filename=" + System.currentTimeMillis() + ".xls");
}
private List generateOrders() {
ArrayList orders = new ArrayList(10);
for (int i = 0; i data) throws Exception{
EasyExcel.write(response.getOutputStream(), Order.class).sheet("订单").doWrite(data);
}
然后在浏览器输入我们的地址就下载下来了,实现效果就不再沾图了。
2.3.3复杂列表导出
1.controller代码如下:
@GetMapping("/exportComplexHeadExcel")
public void exportComplexHeadExcel(HttpServletResponse response) throws Exception{
// 设置response头信息-文件名使用当前时间
setHeader(response);
// 获取excel数据
List data = generateOrders();
// 导出数据
exportComplexHeadExcel(response,data);
}
private void exportComplexHeadExcel(HttpServletResponse response, List data) throws Exception{
EasyExcel.write(response.getOutputStream()).sheet("订单").head(getHeadData()).doWrite(data);
}
private List> getHeadData() {
List> heads = new ArrayList();
// 第一层循环行数的循环
for (int column = 0; column columnData = new ArrayList();
heads.add(columnData);
// 表头第一列数据
if(column==0){
addFirstColumnData(columnData);
continue;
}
// 表头第二列数据
if(column==1){
addSecondColumnData(columnData);
continue;
}
// 表头第三列数据
if(column==2){
addThreeColumnData(columnData);
continue;
}
// 表头第四列数据
if(column==3){
addFourColumnData(columnData);
}
// 表头第五列数据
if(column==4){
addFivelumnData(columnData);
}
}
return heads;
}
private void addFivelumnData(List lineData) {
for (int lineNum = 0; lineNum lineData) {
for (int lineNum = 0; lineNum lineData) {
for (int lineNum = 0; lineNum lineData) {
for (int lineNum = 0; lineNum lineData) {
for (int lineNum = 0; lineNum
2.表头分析
代码可以通过,head需要传的数据是List>数据结构的数据,这个外层的List是column,这个里边的是line数据。分清楚这个,那么其他的就和简单列表是一样的了。
2.3.4含图片导出
1.实体增加图片字段
@Data
public class Order {
/** 订单ID*/
@ExcelProperty("订单ID")
private String orderId;
/** 总价*/
@ExcelProperty("总价")
private BigDecimal totalFee;
/** 创建时间*/
@ExcelProperty("创建时间")
private Date createTime;
/** 商品名称*/
@ExcelProperty("商品名称")
private String goodsName;
/** 商品件数*/
@ExcelProperty("商品件数")
private int num;
/** 商品图片*/
@ExcelProperty("商品图片")
private File img;
}
2.controller代码
@GetMapping("/exportContailImgExcel")
public void exportContailImgExcel(HttpServletResponse response) throws Exception{
// 设置response头信息-文件名使用当前时间
setHeader(response);
// 获取excel数据
List data = generateOrders();
// 添加图片
addImg(data);
// 导出数据
exportContailImgExcel(response,data);
}
private void setHeader(HttpServletResponse response) {
response.reset();
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment; filename=" + System.currentTimeMillis() + ".xls");
}
private List generateOrders() {
ArrayList orders = new ArrayList(10);
for (int i = 0; i data) throws Exception{
for (int i = 0; i data) throws Exception{
EasyExcel.write(response.getOutputStream(), Order.class).sheet("订单").doWrite(data);
}
本次导出使用了本地图片,官网还支持其他的方式,大家可以看看官网。
先分享到这,有问题欢迎提问。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
日常运维工作中有许多的任务要执行,例如项目发布/数据备份/定时巡检/证书更新/漏洞修复等等,大部分的任务都会有多个步骤共同完成,例如一个发布任务会有拉代码、编译、分发、通知等等步骤,而不同的任务可能还包含相同或相似的步骤,例如对于相同语言相同架构的不同项目来说…