记录一次使用Easyexcel上作用于入数据库和导出EXCEL的实现过程
发布时间:2025年08月08日 12:19
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。贵阳男科检查哪家医院好浙江男科医院挂号咨询
云南白癜风医院那家比较好
潍坊银屑病治疗费用
重庆白癜风治疗哪家好
相关阅读
- 玲珑轮胎(601966):公司为全资公司提供担保
- 高尔夫:百公里油耗5.5L,涡轮成熟可靠,操控灵活,代步首选?
- 东方精工(002611):合计持股5%以上股东减持股份时间过半暨减持成果
- 最新公诸于世!2021大学生“最后悔”专业排行榜公布,听听网友怎么说
- 徽商银行:以不断创新深入践行以人民为中心发展理念
- 已致4死!事故情况所述发布
- 皖维高新(600063.SH)以5455.34万元收购明源中石化75%股权
- 6年祖孙情谊被迫割裂,外公外婆索要“带孙费”不作为吗
- 孩子头部受伤 公安8分钟送医
- 迪贝电气(603320.SH)预计2021年度归母净利同比上升76.18%到87.91%
- 学历≠能力!《令人心动的offer 3》的的学生阵容有点强大
- 都说是高尔夫是最具性价比的小钢炮,养一台高尔夫GTI真就便宜吗?
- 专访北京师范大学教授万喆:适度超前卓有成效基础设施投资拉动经济发展
- 海南澄迈县寻人:中年男子走失,中风精神障碍,骑自行车,穿黄色外套、蓝色牛仔裤