SpringBoot实现Excel导出并设置表格属性(easyExcel)
一、添加pom依赖
<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version>
</dependency>
二、Excel文档的自动列宽设置
package com.test.demo.listener;import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.test.demo.entity.User;
import lombok.Getter;import java.util.ArrayList;
import java.util.List;/*** @ClassName UserListener* @Description* @Author WangJing* @Date 2021/7/20 3:20 下午* @Version V1.1.0*/
public class UserListener extends AnalysisEventListener<User> {@Getterprivate List<User> userList = new ArrayList<User>();public UserListener() {super();userList.clear();}/*** 每一条数据解析都会调用*/@Overridepublic void invoke(User user, AnalysisContext context) {userList.add(user);}/*** 所有数据解析完成都会调用*/@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {userList.forEach(System.out::println);}
}
三、编写controller
package com.test.demo.controller;import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.test.demo.entity.User;
import com.test.demo.excel.Custemhandler;
import com.test.demo.excel.EasyExcelUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;/*** @ClassName ExcelController* @Description* @Author WangJing* @Date 2021/7/20 1:58 下午* @Version V1.1.0*/
@Slf4j
@Controller
public class ExcelController {@RequestMapping(value = "/exportExcel", method = RequestMethod.GET)public void download(HttpServletResponse response) throws IOException {response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");String fileName = URLEncoder.encode("测试", "UTF-8");response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");List<User> list = new ArrayList<>();for (int i = 0; i < 100; i++) {User user = new User();user.setAge(i + 10);user.setName("WangJing" + i);user.setPhone("1888888" + i);list.add(user);}EasyExcel.write(response.getOutputStream()).needHead(true).head(User.class).excelType(ExcelTypeEnum.XLSX).registerWriteHandler(new Custemhandler()).registerWriteHandler(EasyExcelUtil.getStyleStrategy()).sheet(0, "sheet").doWrite(list);}}
四、Excel的字体,样式,背景色的设置
package com.test.demo.excel;import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.metadata.style.WriteFont;
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.VerticalAlignment;/*** @ClassName EasyExcelUtil* @Description* @Author WangJing* @Date 2021/7/28 3:24 下午* @Version V1.1.0*/
public class EasyExcelUtil {/*** Excel的字体,样式,背景色的设置* @return*/public static HorizontalCellStyleStrategy getStyleStrategy(){// 头的策略WriteCellStyle headWriteCellStyle = new WriteCellStyle();// 背景设置为灰色headWriteCellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());WriteFont headWriteFont = new WriteFont();headWriteFont.setFontHeightInPoints((short)12);// 字体样式headWriteFont.setFontName("Frozen");headWriteCellStyle.setWriteFont(headWriteFont);//自动换行headWriteCellStyle.setWrapped(false);// 水平对齐方式headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);// 垂直对齐方式headWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);// 内容的策略WriteCellStyle contentWriteCellStyle = new WriteCellStyle();// 这里需要指定 FillPatternType 为FillPatternType.SOLID_FOREGROUND 不然无法显示背景颜色.头默认了 FillPatternType所以可以不指定
// contentWriteCellStyle.setFillPatternType(FillPatternType.SQUARES);// 背景白色contentWriteCellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());WriteFont contentWriteFont = new WriteFont();// 字体大小contentWriteFont.setFontHeightInPoints((short)12);// 字体样式contentWriteFont.setFontName("Calibri");contentWriteCellStyle.setWriteFont(contentWriteFont);// 这个策略是 头是头的样式 内容是内容的样式 其他的策略可以自己实现return new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);}
}
五、User实体类
package com.test.demo.entity;import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;/*** @ClassName User* @Description* @Author WangJing* @Date 2021/7/20 2:17 下午* @Version V1.1.0*/
@Data
public class User {@ExcelProperty(value = "姓名", index = 0)private String name;@ExcelProperty(value = "手机号", index = 1)private String phone;@ExcelProperty(value = "年龄", index = 2)private Integer age;@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", phone='" + phone + '\'' +", age=" + age +'}';}
}
六、浏览器访问下载:http://localhost:8080/exportExcel
注:以上内容仅提供参考和交流,请勿用于商业用途,如有侵权联系本人删除!
SpringBoot实现Excel导出并设置表格属性(easyExcel)相关推荐
- Springboot+poi+实现导出导入Excle表格+Vue引入echarts数据展示
需求: 一. 数据库数据表导出Excle表格 二. Excle数据导入数据库 三. Vue引入Echarts数据展示 工具: idea 数据库: mysql 框架:Springboot 准备工作: 1 ...
- SpringBoot Application.yml 中可设置的属性导航
原文链接:SpringBoot 可设置的属性 # ---------------------------------------- #核心特性 # -------------------------- ...
- easypoi导出excel不设置样式_POI Excel导出样式设置
HSSFSheet sheet = workbook.createSheet("sheetName"); //创建sheet sheet.setVerticallyCenter(t ...
- java表格怎样设置内间距_如何设置表格的间距和背景等属性
步骤一:在打开的网页文档中选择表格后,在"属性"面板中即可对表格的属性进行设置.首先设置表格的id和行列值. 步骤二:接下来设置表格的宽度和高度."宽"和&qu ...
- java导出excel设置边框_Excel如何设置表格边框样式,记住这几个关键属性就懂了
Excel表格边框的设置,对于制作一个漂亮的工作表,十分有用. 由于审美的差异,我们通常做的表格都是以黑色边框白底为主,或者说,有些人根本不知道除了黑白表格还有带颜色的. 如何设置表格边框属性呢,下面 ...
- springboot项目导出excel 合并单元格表格
springboot项目导出excel 合并单元格表格 导出效果 业务controller 业务数据 业务实体类 注解MyExcel.java 注解 MyExcels 导出工具类MyExcelUtil ...
- Springboot之Excel表格导出
Springboot之Excel表格导出 表格导出使用的还是POI,POI的介绍请查看 https://blog.csdn.net/qq_36654629/article/details/901729 ...
- SpringBoot如何实现导出Excel表格
我们查到的数据是list,如何将这些数据导出到Excel表格中呢 我这里查到的list数据是 List monthReportModels 一.导入依赖 <dependency><g ...
- springboot使用jxls导出excel___(万能通用模板)--- SpringBoot导入、导出Excel文件___SpringBoot整合EasyExcel模板导出Excel
springboot使用jxls导出excel 实现思路: 首先在springBoot(或者SpringCloud)项目的默认templates目录放入提前定义好的Excel模板,然后在具体的导出接口 ...
- Springboot整合Poi导出excel(简单版)
一. 问题引入 博客专栏: Springboot整合Poi导出excel(简单版) Springboot整合Poi导出excel(注解版) 总所周知Springboot是一个功能强大的微服务框架,集成 ...
最新文章
- windows下tomcat自动定时重启方法
- Idea实体类上加@Data注解但get/set方法不生效
- ngTemplateOutlet递归的问题
- C++ 系列:extern
- java jpa 注解_Java : JPA相关以及常用注解
- FullCalendar 六:FullCalendar应用——拖动与实时保存
- Cocos2d-js-v3.2 在 mac 上配置环境以及编译到 Andorid 的注意事项(转)
- hibernate中cascade和inverse中的设置问题
- ASP.NET MVC 5高级编程 (pdf书)
- 线性分类器和非线性分类器总结
- 牛客网项目——项目开发(三):开发登录模块
- 大数据平台以及一些核心组件介绍
- 教你怎么用手机进入路由器管理界面
- “《三国演义》人物出场统计“实例讲解
- 国内和国际反垃圾邮件组织
- APP Store下载一直等待中解决办法
- 物联网为什么需要5G?
- ORACLE 年龄计算到月份
- Python - 经典程序示例
- 一文读懂链上身份(DID):赛道及项目一览