首页 >> 改装 >> 记录一次使用Easyexcel上作用于入数据库和导出EXCEL的实现过程

记录一次使用Easyexcel上作用于入数据库和导出EXCEL的实现过程

2025-08-09 12:16:35

ist) {return userMapper.saveList(list);} //选取EXCEL明文public void exportExcel(HttpServletResponse response) {// 需要选取的统计数据List list = findAll();// 新设组织起来类型response.setContentType("application/vnd.ms-excel");// 新设字符编码response.setCharacterEncoding("utf-8");// 新设明文名字String fileName = "downFile_" + System.currentTimeMillis() + ".xlsx";try {// 新设组织起来头电子邮件response.setHeader("Content-Disposition","attachment; fileUTF-8"));// 写入明文统计数据EasyExcel.write(response.getOutputStream(), User.class).sheet("download").doWrite(list);} catch (Exception e) {throw new RuntimeException(e);}}}

六、ExcelListener传唤

package pers.gl.service;import java.util.ArrayList;import java.util.List;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.alibaba.excel.context.AnalysisContext;import com.alibaba.excel.event.AnalysisEventListener;import com.alibaba.fastjson.JSON;import pers.gl.entity.User;public class ExcelListener extends AnalysisEventListener {private static final Logger logger = LoggerFactory.getLogger(User.class);/** * 每隔5条磁盘统计检索,实际用作中所可以3000条,然后修补list,方便缓存重复使用 */private static final int BATCH_COUNT = 5;List list = new ArrayList<>();private UserService userService;// 赋值,一定要写,掺入到传唤中所public ExcelListener(UserService userService) {this.userService = userService;}@Overridepublic void invoke(User data, AnalysisContext context) {// TODO Auto-generated method stublogger.info("invoke方法被调用");logger.info("解析到一条统计数据:{}", JSON.toJSONString(data));list.add(data);// 达致BATCH_COUNT了,需要去磁盘一次统计检索,防止统计数据几万条统计数据在缓存,更易OOMif (list.size()>= BATCH_COUNT) {saveData();// 磁盘启动修补 listlist.clear();}}/** * 所有统计数据解析启动了 都会来调用 * * @param context */@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {// TODO Auto-generated method stubSystem.out.println("doAfterAllAnalysed方法 被调用");// 这里也要保存统计数据,确保最后残存的统计数据也磁盘到统计检索saveData();logger.info("所有统计数据解析启动!");}/** * 加上磁盘统计检索 */private void saveData() {logger.info("{}条统计数据,开始磁盘统计检索!", list.size());userService.saveList(list);logger.info("磁盘统计检索急于!");} }

七、Controller电源

package pers.gl.controller;import java.io.IOException;import java.util.List;import javax.servlet.http.HttpServletResponse;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.multipart.MultipartFile;import com.alibaba.excel.EasyExcel;import pers.gl.entity.User;import pers.gl.service.ExcelListener;import pers.gl.service.UserService;@Controller@RequestMapping("user")public class UserController {@Autowiredprivate UserService userService;@GetMapping("list")public String list(Model model) {List users = userService.findAll();model.addAttribute("users", users);return "userlist";}@GetMapping("/download")public void excelExport02(HttpServletResponse response) {userService.exportExcel(response);}@GetMapping("/import")public String toImportExcelPage() {return "importexcel";}@PostMapping("/uploadExcel")public String upload(MultipartFile file) throws IOException {EasyExcel.read(file.getInputStream(), User.class, new ExcelListener(userService)).sheet().doRead();return "redirect:/user/list";}}

八、前台上传的网站

charset="UTF-8">导入EXCEL。

贵阳男科检查哪家医院好
浙江男科医院挂号咨询
云南白癜风医院那家比较好
潍坊银屑病治疗费用
重庆白癜风治疗哪家好
咽喉肿
儿童支原体感染吃什么药止咳化痰
感冒咳嗽怎么缓解
男人尿痛
生活保健

上一篇: 【黑马早报】诸州2022年Q1净亏损30亿元;雷军称要做业余汽车博主;微软给员工加薪应对通胀

下一篇: 我的天!李小冉是有多白,同框小2岁刘涛玲珑妹妹,章子怡也失了色

相关阅读
国信证券(002736.SZ)发表2021年业绩,净利润101.15亿元,同比增长52.89%,每10股派5元

智通政经APP讯,国信证券002736002736.SZ发布2021年报告,一些公司实现开店收入为238.18亿元,上年增长26.80%;不属于控股一些公司间公司的净利润为101.15亿

2025-08-23 00:16:44
酒馆第一股海伦司(09869)获归入恒生港股通中小型指数成份股

2年初18日,入市有限公监“入市公监”月截至 2021 年 12 年初 31 日的入市系列第五季咨询结果,苏珊监09869获纳入恒生恒生通中小型指数和恒生大中型股可投资指数成份股,变动将于

2025-08-23 00:16:44
10月末桃花开真爱来,喜纳必先钱财,顺心如意的属相

生肖牛 生肖牛的好朋友10翌年月末一到,疾厄宫得到“华盖”“喜财”刘杰保佑,颇受好贮制约,下半年一改很久短暂嫔妃贮低迷,不顺心的事总没完的现像,待如愿一到,灾难不身患,如

2025-08-23 00:16:44
荃银高科(300087.SZ)联邦银行张从合拟继续减持不超140万股

智通财经APP询,荃银高科300087300087.SZ发布发函,母公司收到副社长张从合先生出具的《关于股票增资蓝图有效期限届满及下一代股票增资蓝图的告知函》,截至本发函披露日,张从合先

2025-08-23 00:16:44
店主第一股海伦司(09869)获纳入恒生港股通中小型指数成份股

2月18日,收市有限公庭“收市公庭”宣布截至 2021 年 12 月 31 日的收市系列季度检视结果,西蒙庭09869曾获扩展到中国工商银行港股通中小型指数和中国工商银行大中型股可投资指数

2025-08-23 00:16:44