Easy-excel操作Excel 待修改
1. EasyExcel 简介EasyExcel 是一个基于 Java 的简单、省内存的读写 Excel 工具。在处理大数据量的 Excel 文件时它具有占用内存少、性能高的特点并且使用简单通过注解和少量的代码就能完成 Excel 文件的读写操作。2. EasyExcel 简单语法及使用2.1 添加依赖如果使用 Maven 项目在pom.xml中添加以下依赖dependencygroupIdcom.alibaba/groupIdartifactIdeasyexcel/artifactIdversion3.1.1/version/dependency2.2 写 Excel 示例定义 Excel 数据实体类importcom.alibaba.excel.annotation.ExcelProperty;publicclassDemoData{ExcelProperty(订单编号)privateStringorderNo;ExcelProperty(销售金额)privateDoublesalesAmount;// 构造函数、getter 和 setter 方法publicDemoData(StringorderNo,DoublesalesAmount){this.orderNoorderNo;this.salesAmountsalesAmount;}publicStringgetOrderNo(){returnorderNo;}publicvoidsetOrderNo(StringorderNo){this.orderNoorderNo;}publicDoublegetSalesAmount(){returnsalesAmount;}publicvoidsetSalesAmount(DoublesalesAmount){this.salesAmountsalesAmount;}}写入 Excel 文件importcom.alibaba.excel.EasyExcel;importjava.util.ArrayList;importjava.util.List;publicclassWriteExcelExample{publicstaticvoidmain(String[]args){StringfileNamesales_report.xlsx;ListDemoDatadataListnewArrayList();dataList.add(newDemoData(001,1000.0));dataList.add(newDemoData(002,2000.0));EasyExcel.write(fileName,DemoData.class).sheet(销售报表).doWrite(dataList);}}2.3 读 Excel 示例定义监听器类importcom.alibaba.excel.context.AnalysisContext;importcom.alibaba.excel.event.AnalysisEventListener;importjava.util.ArrayList;importjava.util.List;publicclassDemoDataListenerextendsAnalysisEventListenerDemoData{privateListDemoDatadataListnewArrayList();Overridepublicvoidinvoke(DemoDatadata,AnalysisContextcontext){dataList.add(data);}OverridepublicvoiddoAfterAllAnalysed(AnalysisContextcontext){// 数据解析完成后的操作System.out.println(数据解析完成共 dataList.size() 条记录);}publicListDemoDatagetDataList(){returndataList;}}读取 Excel 文件importcom.alibaba.excel.EasyExcel;publicclassReadExcelExample{publicstaticvoidmain(String[]args){StringfileNamesales_report.xlsx;DemoDataListenerlistenernewDemoDataListener();EasyExcel.read(fileName,DemoData.class,listener).sheet().doRead();System.out.println(listener.getDataList());}}3. 从数据库中取数形成电商销售资金报表示例3.1 数据库连接和数据查询假设使用 MySQL 数据库使用 JDBC 进行数据查询importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.Statement;importjava.util.ArrayList;importjava.util.List;publicclassDatabaseUtils{privatestaticfinalStringURLjdbc:mysql://localhost:3306/ecommerce;privatestaticfinalStringUSERroot;privatestaticfinalStringPASSWORDpassword;publicstaticListDemoDataquerySalesData(){ListDemoDatadataListnewArrayList();try(ConnectionconnDriverManager.getConnection(URL,USER,PASSWORD);Statementstmtconn.createStatement();ResultSetrsstmt.executeQuery(SELECT order_no, sales_amount FROM sales_orders)){while(rs.next()){StringorderNors.getString(order_no);doublesalesAmountrs.getDouble(sales_amount);dataList.add(newDemoData(orderNo,salesAmount));}}catch(Exceptione){e.printStackTrace();}returndataList;}}3.2 生成电商销售资金报表一个 sheet 带有多个报表importcom.alibaba.excel.EasyExcel;importcom.alibaba.excel.write.metadata.WriteSheet;importjava.util.List;publicclassEcommerceSalesReportGenerator{publicstaticvoidmain(String[]args){StringfileNameecommerce_sales_report.xlsx;// 从数据库中查询数据ListDemoDatasalesDataDatabaseUtils.querySalesData();// 创建 Excel 写入对象varexcelWriterEasyExcel.write(fileName).build();// 创建 sheetWriteSheetwriteSheetEasyExcel.writerSheet(销售资金报表).build();// 第一个报表销售订单报表excelWriter.write(salesData,writeSheet);// 模拟第二个报表数据这里简单重复使用 salesData实际可根据需求查询不同数据excelWriter.write(salesData,writeSheet);// 关闭写入器excelWriter.finish();}}4. 报表格式设置如果需要设置报表格式如表头样式、数据样式等可以使用 EasyExcel 提供的样式设置功能。以下是一个简单的表头样式设置示例importcom.alibaba.excel.EasyExcel;importcom.alibaba.excel.write.metadata.WriteSheet;importcom.alibaba.excel.write.metadata.style.WriteCellStyle;importcom.alibaba.excel.write.metadata.style.WriteFont;importcom.alibaba.excel.write.style.HorizontalCellStyleStrategy;importorg.apache.poi.ss.usermodel.HorizontalAlignment;importjava.util.List;publicclassFormattedReportGenerator{publicstaticvoidmain(String[]args){StringfileNameformatted_report.xlsx;ListDemoDatasalesDataDatabaseUtils.querySalesData();// 表头样式WriteCellStyleheadWriteCellStylenewWriteCellStyle();WriteFontheadWriteFontnewWriteFont();headWriteFont.setFontHeightInPoints((short)12);headWriteCellStyle.setWriteFont(headWriteFont);headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);// 内容样式WriteCellStylecontentWriteCellStylenewWriteCellStyle();contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);// 样式策略HorizontalCellStyleStrategyhorizontalCellStyleStrategynewHorizontalCellStyleStrategy(headWriteCellStyle,contentWriteCellStyle);// 创建 Excel 写入对象并应用样式策略varexcelWriterEasyExcel.write(fileName,DemoData.class).registerWriteHandler(horizontalCellStyleStrategy).build();WriteSheetwriteSheetEasyExcel.writerSheet(销售资金报表).build();excelWriter.write(salesData,writeSheet);excelWriter.finish();}}5、代码实现可视化调整样式1. 基本样式设置在 EasyExcel 里能够运用WriteCellStyle和WriteFont类来设置单元格的样式像字体、颜色、对齐方式等。以下是一个完整示例展示如何设置表头和内容的样式importcom.alibaba.excel.EasyExcel;importcom.alibaba.excel.write.metadata.WriteSheet;importcom.alibaba.excel.write.metadata.style.WriteCellStyle;importcom.alibaba.excel.write.metadata.style.WriteFont;importcom.alibaba.excel.write.style.HorizontalCellStyleStrategy;importorg.apache.poi.ss.usermodel.*;importjava.util.ArrayList;importjava.util.List;// 定义 Excel 数据实体类classDemoData{com.alibaba.excel.annotation.ExcelProperty(订单编号)privateStringorderNo;com.alibaba.excel.annotation.ExcelProperty(销售金额)privateDoublesalesAmount;publicDemoData(StringorderNo,DoublesalesAmount){this.orderNoorderNo;this.salesAmountsalesAmount;}publicStringgetOrderNo(){returnorderNo;}publicvoidsetOrderNo(StringorderNo){this.orderNoorderNo;}publicDoublegetSalesAmount(){returnsalesAmount;}publicvoidsetSalesAmount(DoublesalesAmount){this.salesAmountsalesAmount;}}publicclassExcelStyleExample{publicstaticvoidmain(String[]args){StringfileNamestyled_report.xlsx;ListDemoDatadataListnewArrayList();dataList.add(newDemoData(001,1000.0));dataList.add(newDemoData(002,2000.0));// 表头样式WriteCellStyleheadWriteCellStylenewWriteCellStyle();WriteFontheadWriteFontnewWriteFont();headWriteFont.setFontHeightInPoints((short)14);// 设置表头字体大小headWriteFont.setBold(true);// 表头字体加粗headWriteCellStyle.setWriteFont(headWriteFont);headWriteCellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());// 设置表头背景颜色headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);// 表头内容居中对齐// 内容样式WriteCellStylecontentWriteCellStylenewWriteCellStyle();WriteFontcontentWriteFontnewWriteFont();contentWriteFont.setFontHeightInPoints((short)12);// 设置内容字体大小contentWriteCellStyle.setWriteFont(contentWriteFont);contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);// 内容居中对齐contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);// 内容垂直居中对齐contentWriteCellStyle.setBorderBottom(BorderStyle.THIN);// 设置底部边框contentWriteCellStyle.setBorderLeft(BorderStyle.THIN);// 设置左边框contentWriteCellStyle.setBorderRight(BorderStyle.THIN);// 设置右边框contentWriteCellStyle.setBorderTop(BorderStyle.THIN);// 设置顶部边框// 样式策略HorizontalCellStyleStrategyhorizontalCellStyleStrategynewHorizontalCellStyleStrategy(headWriteCellStyle,contentWriteCellStyle);// 写入 Excel 文件并应用样式策略EasyExcel.write(fileName,DemoData.class).registerWriteHandler(horizontalCellStyleStrategy).sheet(销售报表).doWrite(dataList);}}2. 自定义样式处理器要是有更复杂的样式需求还能自定义样式处理器。下面是一个自定义样式处理器的示例它会依据数据内容来设置不同的样式importcom.alibaba.excel.EasyExcel;importcom.alibaba.excel.write.handler.CellWriteHandler;importcom.alibaba.excel.write.metadata.holder.WriteSheetHolder;importcom.alibaba.excel.write.metadata.holder.WriteTableHolder;importcom.alibaba.excel.write.metadata.style.WriteCellStyle;importcom.alibaba.excel.write.metadata.style.WriteFont;importorg.apache.poi.ss.usermodel.*;importjava.util.ArrayList;importjava.util.List;classCustomCellStyleHandlerimplementsCellWriteHandler{OverridepublicvoidafterCellDispose(WriteSheetHolderwriteSheetHolder,WriteTableHolderwriteTableHolder,ListCellDatacellDataList,Cellcell,Headhead,IntegerrelativeRowIndex,BooleanisHead){if(!isHead){WriteCellStylestylenewWriteCellStyle();WriteFontfontnewWriteFont();if(cell.getColumnIndex()1){// 假设第二列是销售金额列doubleamountDouble.parseDouble(cell.getStringCellValue());if(amount1500){font.setColor(IndexedColors.RED.getIndex());// 销售金额大于 1500 显示红色字体}}style.setWriteFont(font);CellStylecellStylewriteSheetHolder.getSheet().getWorkbook().createCellStyle();cellStyle.cloneStyleFrom(style.build());cell.setCellStyle(cellStyle);}}}publicclassCustomStyleExample{publicstaticvoidmain(String[]args){StringfileNamecustom_styled_report.xlsx;ListDemoDatadataListnewArrayList();dataList.add(newDemoData(001,1000.0));dataList.add(newDemoData(002,2000.0));EasyExcel.write(fileName,DemoData.class).registerWriteHandler(newCustomCellStyleHandler()).sheet(销售报表).doWrite(dataList);}}借助工具进行可视化调整在生成 Excel 文件之后你可以使用 Excel 软件如 Microsoft Excel 或 WPS 表格打开文件然后通过软件的界面来可视化地调整样式具体操作步骤如下打开文件用 Excel 软件打开 EasyExcel 生成的文件。选择单元格或区域选中你想要调整样式的单元格或者单元格区域。调整样式利用 Excel 软件提供的功能来调整样式例如字体设置在“开始”菜单中选择字体、字号、颜色、加粗、倾斜等。对齐方式通过“对齐方式”组设置水平对齐和垂直对齐方式。边框和底纹使用“边框”和“填充颜色”按钮来设置单元格的边框和背景颜色。数据格式在“数字”组中选择合适的数据格式如货币、百分比等。

相关新闻

如何用1小时完成LLM审计报告?——基于ISO/IEC 23053与NIST AI RMF的自动化审计流水线

如何用1小时完成LLM审计报告?——基于ISO/IEC 23053与NIST AI RMF的自动化审计流水线

更多请点击: https://codechina.net 第一章:AI模型审计方法论的演进与范式迁移 早期AI模型审计聚焦于静态合规检查,如参数合法性验证与输入输出边界测试,依赖规则引擎与预定义断言。随着深度学习模型复杂度跃升、部署场景泛化&am…

2026/8/4 20:56:22 阅读更多 →
终极宽屏适配方案:让经典《植物大战僵尸》完美适配现代显示器

终极宽屏适配方案:让经典《植物大战僵尸》完美适配现代显示器

终极宽屏适配方案:让经典《植物大战僵尸》完美适配现代显示器 【免费下载链接】PvZWidescreen Widescreen mod for Plants vs Zombies 项目地址: https://gitcode.com/gh_mirrors/pv/PvZWidescreen 还在为《植物大战僵尸》在宽屏显示器上的黑边烦恼吗&#x…

2026/8/4 20:55:21 阅读更多 →
终极指南:如何用VinXiangQi快速实现中国象棋AI自动连线

终极指南:如何用VinXiangQi快速实现中国象棋AI自动连线

终极指南:如何用VinXiangQi快速实现中国象棋AI自动连线 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi VinXiangQi是一款基于YOLOv5深度学习的…

2026/8/4 20:55:21 阅读更多 →

最新新闻

Lambda架构实践:大数据批流处理核心技术解析

Lambda架构实践:大数据批流处理核心技术解析

1. Lambda架构在大数据平台中的最佳实践大数据处理领域一直面临着实时性与准确性难以兼得的困境。传统批处理系统能保证数据准确性但延迟高,而纯流式处理虽然响应快却难以处理历史数据。我在金融风控和物联网数据分析项目中多次验证,Lambda架构通过巧妙分…

2026/8/4 21:35:38 阅读更多 →
Python与GIS编程:GIS Programming Roadmap数据科学实战教程

Python与GIS编程:GIS Programming Roadmap数据科学实战教程

Python与GIS编程:GIS Programming Roadmap数据科学实战教程 【免费下载链接】gis-programming-roadmap One stop shop for all your GIS Programming needs 项目地址: https://gitcode.com/gh_mirrors/gi/gis-programming-roadmap GIS Programming Roadmap是…

2026/8/4 21:35:38 阅读更多 →
非root用户安全实践:uv-docker-example容器最佳配置

非root用户安全实践:uv-docker-example容器最佳配置

非root用户安全实践:uv-docker-example容器最佳配置 【免费下载链接】uv-docker-example An example of using uv in Docker images 项目地址: https://gitcode.com/gh_mirrors/uv/uv-docker-example 在容器化应用部署中,使用root用户运行服务存在…

2026/8/4 21:35:38 阅读更多 →
Kwaipilot_KAT-Coder-V2.5-Dev-GGUF性能优化指南:CPU与GPU资源配置最佳实践

Kwaipilot_KAT-Coder-V2.5-Dev-GGUF性能优化指南:CPU与GPU资源配置最佳实践

Kwaipilot_KAT-Coder-V2.5-Dev-GGUF性能优化指南:CPU与GPU资源配置最佳实践 【免费下载链接】Kwaipilot_KAT-Coder-V2.5-Dev-GGUF 项目地址: https://ai.gitcode.com/hf_mirrors/bartowski/Kwaipilot_KAT-Coder-V2.5-Dev-GGUF Kwaipilot_KAT-Coder-V2.5-Dev…

2026/8/4 21:35:38 阅读更多 →
鸣潮自动化工具ok-ww:让你的游戏时间真正回归乐趣本身

鸣潮自动化工具ok-ww:让你的游戏时间真正回归乐趣本身

鸣潮自动化工具ok-ww:让你的游戏时间真正回归乐趣本身 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸 一键日常 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 你是否也曾经历过…

2026/8/4 21:34:38 阅读更多 →
Tailwind Traders架构解析:从前端到后端的Azure云服务集成全景

Tailwind Traders架构解析:从前端到后端的Azure云服务集成全景

Tailwind Traders架构解析:从前端到后端的Azure云服务集成全景 【免费下载链接】TailwindTraders 项目地址: https://gitcode.com/gh_mirrors/ta/TailwindTraders Tailwind Traders是一个基于Azure云服务构建的现代化电商平台,通过整合前端应用与…

2026/8/4 21:34:38 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/4 13:24:41 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/4 11:41:39 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →