记录一次使用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。贵阳男科检查哪家医院好浙江男科医院挂号咨询
云南白癜风医院那家比较好
潍坊银屑病治疗费用
重庆白癜风治疗哪家好
相关阅读
- 精品速溶咖啡新品牌围剿下,传统速溶鼻祖们也在创新性
- 世界因她而美丽|乳腺微创旋切术,让去“疣”无痕不是梦
- 65岁河南唤单杠健身引围观,网友:唤坐公交能不能给我让个座
- 探访恒驰体验中心:现车究竟在哪?这样的恒大汽车谁来买单?
- @太原人,新冠中风涉疫地区信息提示(2022年4月5日)
- 四部清明节档影片宣布延长上映至6月底或7月初
- @太原人,新冠肺癌涉疫地区信息提示(2022年4月5日)
- 突发!绿地寻求美元债会展!将出售千亿资产,执行总裁张蕴上午出席电话会议
- 滚蛋吧大臭脚!用它喷出一喷出,脱鞋再也不招恨~
- 新规来了!红桥还算不算白酒?
- 滚蛋吧大臭脚!用它喷一喷,脱鞋从此以后不招恨~
- 人教Pad定价超4000元 均为校内统一采购
- 帅气的要能!威金斯拥有巧克力要能,戈登要能饱满如同搓衣板
- 国际油价大涨3%:OPEC拒绝急剧增产,美国“指示”希腊扣押伊朗油轮