最新要闻
- 国内首家!奇瑞霸气官宣:旗下四大品牌全系车型终身质保
- 环球观察:30年前拍不成 现在香爆!郭帆拍《流浪地球3》 图恒宇写“4”原因揭晓
- 天天要闻:颜值碾压BBA 马自达旗舰CX-90全球首发:国产后或砍3.3T
- 支付巨头PayPal“挥刀”裁员7%:2000名员工将被辞退
- 当前快报:反向操作?特斯拉降价后 宝马、牧马人等油车主动涨价
- 用户不升Win11原因扎心!微软正式停售Win10:ISO等继续下载
- 比SSD便宜 还写不死!净亏4.4亿美元 西数力挺机械硬盘:9亿美元要收铠侠
- 小米商城惊现神价格!将近500块的手机壳只要10元 米粉疯狂下单
- 今日报丨曝苹果2025年推出折叠屏MacBook:20.5英寸屏 颠覆以往
- 环球最资讯丨韩国刷新世界最低生育率纪录 一小学上演1人毕业季:网友唏嘘
- 联想小新Pro 16 23款轻薄本真机首曝:115W性能释放堪比游戏本
- 天天观点:NVIDIA御用游戏《赛博朋克2077》终于支持DLSS 3:性能暴涨3.9倍!
- 天天热推荐:机械硬盘:彻底陨落
- 天天热头条丨地球最黑暗的时刻:被狂轰滥炸长达2000万年
- 信息:游客岳飞观高喊“还我河山” 砸打秦桧像:景区已报警
- 焦点热文:丰田章男:一年卖出1049万辆汽车!却败给了电动车
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
天天新消息丨easy excel 导入导出
【资料图】
随笔记录通过easy excel实现导入导出
第一步:导入依赖
第二步:创建导入导出工具类 com.alibaba easyexcel 3.1.0
public class ExcelUtil { /** * 导出数据为excel文件 * * @param filename 文件名称 * @param sheetName sheet名称 * @param dataResult 集合内的bean对象类型要与clazz参数一致 * @param clazz 集合内的bean对象类型要与clazz参数一致 * @param response HttpServlet响应对象 *///有实体对象的导出方式 public static void export(String filename,String sheetName, List> dataResult, Class> clazz, HttpServletResponse response) { response.setStatus(200); response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); OutputStream outputStream = null; ExcelWriter excelWriter = null; try { if (StringUtil.isEmpty(filename)) { throw new RuntimeException(""filename" 不能为空"); } String fileName = filename.concat(".xls"); response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); outputStream = response.getOutputStream(); // 根据不同的策略生成不同的ExcelWriter对象 if (dataResult == null){ excelWriter = getTemplateExcelWriter(outputStream); } else { excelWriter = getExportExcelWriter(outputStream); } //获取表头个数 int last = clazz.getDeclaredFields().length; WriteSheet writeSheet = EasyExcel.writerSheet(sheetName).head(clazz) .relativeHeadRowIndex(1) .registerWriteHandler(new MonthSheetWriteHandler(sheetName,last))//设置大标题名称及其单元格合并 .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())//自适应列宽 .build(); // 写出数据 excelWriter.write(dataResult,writeSheet); } catch (Exception e) { log.error("导出excel数据异常:", e); throw new RuntimeException(e); } finally { if (excelWriter != null) { excelWriter.finish(); } if (outputStream != null) { try { outputStream.flush(); outputStream.close(); } catch (IOException e) { log.error("导出数据关闭流异常", e); } } } }//没有实体对象的导出方式 public static void export(String filename,String sheetName,String headName, List> dataResult, List> head, HttpServletResponse response) { response.setStatus(200); response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); OutputStream outputStream = null; ExcelWriter excelWriter = null; try { if (StringUtil.isEmpty(filename)) { throw new RuntimeException(""filename" 不能为空"); } String fileName = filename.concat(".xls"); response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); outputStream = response.getOutputStream(); // 根据不同的策略生成不同的ExcelWriter对象 if (dataResult == null){ excelWriter = getTemplateExcelWriter(outputStream); } else { excelWriter = getExportExcelWriter(outputStream); } WriteSheet writeSheet = EasyExcel.writerSheet(sheetName).head(head) .relativeHeadRowIndex(1) .registerWriteHandler(new MonthSheetWriteHandler(headName,head.size()))//设置大标题名称及其单元格合并 .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())//自适应列宽 .build(); // 写出数据 excelWriter.write(dataResult,writeSheet); } catch (Exception e) { log.error("导出excel数据异常:", e); throw new RuntimeException(e); } finally { if (excelWriter != null) { excelWriter.finish(); } if (outputStream != null) { try { outputStream.flush(); outputStream.close(); } catch (IOException e) { log.error("导出数据关闭流异常", e); } } } } /** * 根据不同策略生成不同的ExcelWriter对象, 可根据实际情况修改 * @param outputStream 数据输出流 * @return 模板下载ExcelWriter对象 */ private static ExcelWriter getTemplateExcelWriter(OutputStream outputStream){ return EasyExcel.write(outputStream) //.registerWriteHandler(new CommentWriteHandler()) //增加批注策略 //.registerWriteHandler(new CustomSheetWriteHandler()) //增加下拉框策略 .registerWriteHandler(getStyleStrategy()) //字体居中策略 .build(); } /** * 根据不同策略生成不同的ExcelWriter对象, 可根据实际情况修改 * @param outputStream 数据输出流 * @return 数据导出ExcelWriter对象 */ private static ExcelWriter getExportExcelWriter(OutputStream outputStream){ return EasyExcel.write(outputStream) .registerWriteHandler(getStyleStrategy()) //字体居中策略 .build(); } /** * 设置表格内容居中显示策略 * @return */ private static HorizontalCellStyleStrategy getStyleStrategy(){ WriteCellStyle headWriteCellStyle = new WriteCellStyle(); headWriteCellStyle.setFillForegroundColor(IndexedColors.WHITE.index); //设置头字体 WriteFont headWriteFont = new WriteFont(); headWriteFont.setFontHeightInPoints((short)10); headWriteFont.setBold(true); headWriteCellStyle.setWriteFont(headWriteFont); headWriteFont.setFontName("宋体"); //设置头居中 headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); // 内容策略 WriteCellStyle writeCellStyle = new WriteCellStyle(); // 设置内容水平居中 writeCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER); //垂直居中,水平居中 writeCellStyle.setVerticalAlignment(VerticalAlignment.CENTER); writeCellStyle.setBorderLeft(BorderStyle.THIN); writeCellStyle.setBorderTop(BorderStyle.THIN); writeCellStyle.setBorderRight(BorderStyle.THIN); writeCellStyle.setBorderBottom(BorderStyle.THIN); writeCellStyle.setWriteFont(headWriteFont); //设置 自动换行 //contentWriteCellStyle.setWrapped(true); return new HorizontalCellStyleStrategy(headWriteCellStyle, writeCellStyle); } /** * 根据Excel模板,批量导入数据 * @param file 导入的Excel * @param clazz 解析的类型 * @return 解析完成的数据 */ public static List> importExcel(MultipartFile file, Class> clazz){ if (file == null || file.isEmpty()){ throw new RuntimeException("没有文件或者文件内容为空!"); } List
public class MonthSheetWriteHandler implements SheetWriteHandler { private String titleName=""; private int last=0; public MonthSheetWriteHandler(String titleName,int last){ this.titleName=titleName; this.last=last; } @Override public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) { Workbook workbook = writeWorkbookHolder.getWorkbook(); Sheet sheet = workbook.getSheetAt(0); Row row1 = sheet.createRow(0); row1.setHeight((short) 800); Cell cell = row1.createCell(0); //设置标题 cell.setCellValue(titleName+"表"); CellStyle cellStyle = workbook.createCellStyle(); cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); cellStyle.setAlignment(HorizontalAlignment.CENTER); Font font = workbook.createFont(); font.setBold(true); font.setFontHeight((short) 400); font.setFontName("宋体"); cellStyle.setFont(font); cell.setCellStyle(cellStyle); sheet.addMergedRegionUnsafe(new CellRangeAddress(0, 0, 0, last)); }}第四步:创建导入的监听器
public class ExcelListener extends AnalysisEventListener { //可以通过实例获取该值 private List
fileName:文件名称
sheetName:sheet名称
exportList:数据源HouseExportVO.class:实体类对象,与数据源对应response:HttpServlet响应对象
*/
//ExcelUtil.export(fileName,sheetName,exportList, HouseExportVO.class, response); 有实体类对象的调用方式/**
fileName:文件名称
sheetName:sheet名称
headName:头部标题名称
dataList:数据源组装
headList:动态头部列组装
response:HttpServlet响应对象
*/
//ExcelUtil.export(fileName,sheetName,headName,dataList, headList, response);动态列调用方式//导入
//读取文件,获取数据/**
multipartFile:导入的文件,由前端传入
HouseImportExcelDTO.class:接受数据所对应的实体对象
读取到的数据源:excelData
*///List> excelData = ExcelUtil.importExcel(multipartFile, HouseImportExcelDTO.class);自此通用的easyExcel导入导出就完成了,具体导出的表格样式自行设置!
-
天天新消息丨easy excel 导入导出
随笔记录通过easyexcel实现导入导出第一步:导入依赖<dependency><groupId>com alibaba< groupId><ar
来源: -
全球最资讯丨@vue/cli 插件开发之自动根据目录列表生成别名配置
1 相关文档@vue cli官方文档@vue cli@vue cli插件开发指南@vue cli2 插件命名规范为了让一个CLI插...
来源: 天天新消息丨easy excel 导入导出
全球最资讯丨@vue/cli 插件开发之自动根据目录列表生成别名配置
国内首家!奇瑞霸气官宣:旗下四大品牌全系车型终身质保
环球观察:30年前拍不成 现在香爆!郭帆拍《流浪地球3》 图恒宇写“4”原因揭晓
天天要闻:颜值碾压BBA 马自达旗舰CX-90全球首发:国产后或砍3.3T
支付巨头PayPal“挥刀”裁员7%:2000名员工将被辞退
当前快报:反向操作?特斯拉降价后 宝马、牧马人等油车主动涨价
全球看点:OKR之剑·实战篇04:OKR执行过程优化的那些关键事
用户不升Win11原因扎心!微软正式停售Win10:ISO等继续下载
比SSD便宜 还写不死!净亏4.4亿美元 西数力挺机械硬盘:9亿美元要收铠侠
小米商城惊现神价格!将近500块的手机壳只要10元 米粉疯狂下单
今日报丨曝苹果2025年推出折叠屏MacBook:20.5英寸屏 颠覆以往
环球最资讯丨韩国刷新世界最低生育率纪录 一小学上演1人毕业季:网友唏嘘
联想小新Pro 16 23款轻薄本真机首曝:115W性能释放堪比游戏本
【计算机网络】Stanford CS144 Lab0 : networking warmup 学习记录
天天最资讯丨React框架运行机制
netcore之异步并不是多线程!
天天观点:NVIDIA御用游戏《赛博朋克2077》终于支持DLSS 3:性能暴涨3.9倍!
天天热推荐:机械硬盘:彻底陨落
天天热头条丨地球最黑暗的时刻:被狂轰滥炸长达2000万年
信息:游客岳飞观高喊“还我河山” 砸打秦桧像:景区已报警
焦点热文:丰田章男:一年卖出1049万辆汽车!却败给了电动车
环球快报:特斯拉2022年在华营收181.45亿美元:占比降至约22%
天天微动态丨千呼万唤始出来 《赛博朋克2077》正式支持DLSS3
神十五乘组太空过春节!这一看就是咱中国的空间站:红红火火
天天热头条丨MySQL之MVCC总结理解
环球关注:autojs实例02-为朋友圈指定好友点赞
Prometheus&Grafana基本使用
直播:5万年一遇绿色彗星逼近地球 肉眼可见
python教程:shutil高级文件操作
当前播报:自定义ConditionalOnXX注解(二)
世界焦点!河南矿山开工招聘电话被打爆:因6100万奖金火出圈
天天热议:对不起!《狂飙》反派集体直播“道歉”:阵势让网友欢呼太上头
观热点:日本厂商2023年推出新款磁带收音机:支持U盘数据转录
天天日报丨戴尔灵越Pro 2023系列上架:13代酷睿P系 5999元起
DDS结构的FPGA实现
【算法训练营day34】LeetCode1005. K次取反后最大化的数组和 LeetCode134. 加油站 LeetCode135. 分发糖果
天天观焦点:女子有洁癖:每天消杀双手10次 结果患乏脂性皮炎
最新快讯!彻底消灭自燃!宝马今年开始测试固态电池:计划两年后装车
世界信息:情人节倒计时 国外动物园想出报复前任的绝妙点子:蟑螂惨了
当前速讯:宏碁杀入显卡市场!通吃Intel/AMD、不碰NVIDIA
新资讯:《狂飙》热播!湖南一网吧凌晨变《狂飙》专场
实时焦点:如何手动补充陈年老库(或纯 JS 代码)的 TypeScript 类型?
中国新车质量榜:前四均被合资车企包揽 本田最大赢家
刷新中国影史记录!2023年院线全年总票房已破百亿
播报:男生和女生初四相亲初八订婚:称不想耽误节后上班!网友惊到
全球热头条丨《黑豹2》中国角色海报发布:全员黑色皮肤 2月7日上映
看点:我国自研水陆飞机!“鲲龙”AG600M全面进入型号取证试飞阶段
博客园主题美化DIY教程
全球短讯!优秀前端都应该具备的开发好习惯,坚持了效率翻倍
每日视讯:有博主称《满江红》制作成本不到1000万!歌手胡彦斌一番话上了热搜第一
视焦点讯!Xbox月活用户突破1.2亿!微软赢麻了
全球快看:强盛集团橱窗上架《孙子兵法》:还卖小灵通手机壳
迄今为止最庞大的公版显卡来了?RTX 4090Ti/Titan曝光
比亚迪正式进军日本市场卖车:“两田一产”如临大敌
世界消息!Linux 服务器Python后台运行服务(ssh断开不退出)
资讯推荐:Docker-consul的容器服务更新与发现
【天天时快讯】记录--手把手教学,实现一个优雅的图片预览
每日快报!首款车明年量产!小米汽车最新专利公布:手表控制车有戏
天天热文:A卡游戏画面鲜艳 N卡灰蒙蒙?可能是这里设置错了
焦点播报:北美杀入前十后《流浪地球2》官宣:2月9日在中国香港及澳门上映
焦点简讯:三体人为什么那么害怕地球人的加速器?中科院科普
中国航天科技喊话《流浪地球2》:太空天梯、地球车站、空间驿站有望实现
全球报道:网易二面:CPU狂飙900%,该怎么处理?
每日看点!男子打赏女主播1.8万后起诉欲要回!最终被驳回诉求
焦点速递!男子寄5万元笔记本被摔坏索赔遭拒:屏幕、键盘都烂了 维修要2万
动视暴雪点赞《最后生还者》:索尼令人敬畏 我们被收购是应该的
天天热头条丨官网12.4万元帕纳梅拉遭抢购 保时捷:情况属实 已与首单用户达成协议
当前观察:索尼PS5现货全开放!黄牛惨了:带大量机器退货遭拒
环球资讯:Redis数据结构实战演练,看看微博、微信、购物车、抽奖小程序是如何使用的?
全球聚焦:【促进开发】上海道宁与DHTMLX为您提供易于使用且功能丰富的JavaScript组件
APITable:免费开源的多维表格与可视化数据库,上线1天斩获GitHub星标1000+
今日精选:HTTP笔记1--网络模型
环球速讯:selenium + python自动化测试环境搭建
刘慈欣:30年前拍不成《流浪地球2》 投资人不会信的
观热点:SSD性能领先35倍 机械硬盘命悬一线:没啥理由买
【全球速看料】流浪小狐狸投奔看守所1年胖成球:今年要帮它减肥
不止砍掉UFS 4.0:三星Galaxy S23标准版遭全方位缩水
c++代码实现中时间复杂度的不断优化
聚焦:一步一步实现若依框架--2.4数据权限 data_scope
800W功耗!RTX 4090 Ti四插槽"核弹"真的有 但不一定能生出来
全球微速讯:《最后生还者》剧集第3集与游戏对比 还原度高
实时焦点:摩托骑手广东高速上恶意损坏其他车辆 官方回应:一刀切禁摩很好?
天天观察:云萌 V2.6.3.0 win10,win11 Windows永久激活工具
热推荐:基于Spring Cache实现Caffeine、jimDB多级缓存实战
portswigger 靶场之 XSS 篇 (下)
全球最新:【算法训练营day32】LeetCode122. 买卖股票的最佳时机II LeetCode55. 跳跃游戏 LeetCode45. 跳跃游戏II
部署Kubernetes Cluster
每日短讯:12.4万买新帕纳梅拉!近600名国内网友保时捷官网疯抢:成功下单后被取消
【全球时快讯】奔驰获全球首家L3级自动驾驶认证:开车不用看路 出事故奔驰负责
【快播报】优酷回应1元会员被扣24元争议:活动规则已告知 扣钱没毛病
当前热文:水墨风场景惊艳!《仙剑奇侠传7》DLC《人间如梦》官宣2月发售
彻底扑灭一台特斯拉Model S有多难 消防员实测:用了22.7吨水
天天快消息!Android 软键盘丝滑切换(一)
天天看点:视频发布失败原因不好找?火山引擎数智平台这款产品能帮忙
速看:OpenYurt v1.2 新版本深度解读(一): 聚焦边云网络优化
【环球播资讯】小鹏股价暴跌、交付量惨淡 何小鹏专访回应:未来会这么做
全球动态:全球首个!婴幼儿视功能损伤手机智能筛查系统面世
撸猫手感 绿联iPhone 12-14系列液态硅胶保护壳9.9元起
天天快看点丨海淘不香了!日版Xbox主机涨价将近260元