【苍穹外卖 Day12| Excel 入门】
前言后台系统经常要和 Excel 打交道把数据整理成表格交给运营人员或者读取已有表格继续处理。Apache POI 提供了 Java 操作 Office 文件的能力本节先把最基础的 Excel 写入和读取流程走通。本文只讨论 XLSX 文件的基础读写。工作台的营业数据报表导出属于这套能力的后续应用文末只作简要说明。一、Apache POI 能做什么Apache POI 是 Java 操作 Microsoft Office 文件的开源项目其中最常用的场景是处理 Excel。Excel 有两种常见格式.xls旧版 Excel 格式.xlsx新版 Excel 格式。本节使用的是 XLSX所以代码中使用 XSSFWorkbook、XSSFSheet、XSSFRow 和 XSSFCell。它们之间的层级关系可以这样理解XSSFWorkbook 一个 Excel 工作簿 └── XSSFSheet 工作表例如“Sheet1” └── XSSFRow 一行数据 └── XSSFCell 一个单元格后续无论是自己创建表格还是打开一个已有模板本质上都是沿着这个结构定位数据。二、项目中的 POI 依赖学习笔记中的入门代码使用的是 POI 3.16。当前苍穹外卖项目在父工程 pom.xml 中统一管理的版本为 5.3.0并同时引入了下面两个依赖dependencygroupIdorg.apache.poi/groupIdartifactIdpoi/artifactIdversion${poi}/version/dependencydependencygroupIdorg.apache.poi/groupIdartifactIdpoi-ooxml/artifactIdversion${poi}/version/dependency其中poi-ooxml 用于处理 XLSX 这类 OOXML 格式文件。实际写项目时优先跟随当前工程已经声明的版本不要再额外混入笔记中的旧版本依赖。三、把数据写入 Excel 文件写入 Excel 的顺序很固定先在内存中创建工作簿再创建工作表、行和单元格最后通过输出流写到磁盘。importorg.apache.poi.xssf.usermodel.XSSFRow;importorg.apache.poi.xssf.usermodel.XSSFSheet;importorg.apache.poi.xssf.usermodel.XSSFWorkbook;importjava.io.FileOutputStream;publicclassPOITest{publicstaticvoidwrite()throwsException{try(XSSFWorkbookworkbooknewXSSFWorkbook();FileOutputStreamoutputStreamnewFileOutputStream(D:/itcast.xlsx)){XSSFSheetsheetworkbook.createSheet(itcast);XSSFRowrow1sheet.createRow(0);row1.createCell(1).setCellValue(姓名);row1.createCell(2).setCellValue(城市);XSSFRowrow2sheet.createRow(1);row2.createCell(1).setCellValue(张三);row2.createCell(2).setCellValue(北京);XSSFRowrow3sheet.createRow(2);row3.createCell(1).setCellValue(李四);row3.createCell(2).setCellValue(上海);workbook.write(outputStream);}}}这段代码中new XSSFWorkbook() 只是在内存里创建 Excel 对象还没有生成文件。createSheet(“itcast”) 创建名为 itcast 的工作表createRow(0) 创建第一行createCell(1) 创建该行的第二个单元格。最后调用 workbook.write(outputStream)工作簿中的内容才会通过 FileOutputStream 写入 D:/itcast.xlsx。运行后打开文件可以看到姓名、城市以及两行示例数据。这里推荐使用 try-with-resources。工作簿和输出流会在代码块结束后自动关闭避免文件被占用或资源泄漏。四、从 Excel 文件读取数据读取操作和写入操作正好相反先通过输入流打开文件再获取工作表、行和单元格最后读取单元格内容。importorg.apache.poi.xssf.usermodel.XSSFCell;importorg.apache.poi.xssf.usermodel.XSSFRow;importorg.apache.poi.xssf.usermodel.XSSFSheet;importorg.apache.poi.xssf.usermodel.XSSFWorkbook;importjava.io.FileInputStream;publicclassPOITest{publicstaticvoidread()throwsException{try(FileInputStreaminputStreamnewFileInputStream(D:/itcast.xlsx);XSSFWorkbookworkbooknewXSSFWorkbook(inputStream)){XSSFSheetsheetworkbook.getSheetAt(0);intlastRowNumsheet.getLastRowNum();for(inti0;ilastRowNum;i){XSSFRowrowsheet.getRow(i);XSSFCellnameCellrow.getCell(1);XSSFCellcityCellrow.getCell(2);StringnamenameCell.getStringCellValue();StringcitycityCell.getStringCellValue();System.out.println(name city);}}}}new XSSFWorkbook(inputStream) 会根据输入流加载已有的 Excel 文件。getSheetAt(0) 获取第一个工作表getLastRowNum() 获取最后一行的行号因此循环条件要写成 i lastRowNum。每次循环先取出当前行再取第 2、3 个单元格最后用 getStringCellValue() 得到文本内容。这个示例写入的全部是字符串所以可以直接按字符串读取。五、两个容易写错的细节1. 行号和列号从 0 开始POI 的行、列下标都从 0 开始createRow(0) 第 1 行 createCell(0) 第 1 列 createCell(1) 第 2 列示例把数据写到第 2、3 列所以使用的是 createCell(1) 和 createCell(2)。如果把 Excel 中看到的“第几列”直接当成 POI 的下标就会出现整体错位。2. 空行、空单元格和数据类型需要额外判断入门示例中的每一行、每个单元格都已提前写入数据读取时可以直接调用方法。真实 Excel 往往包含空行、空单元格、数字或日期这时直接调用 getStringCellValue() 可能抛出异常。处理外部上传的表格时应先判断 row 和 cell 是否为空再按单元格实际类型读取。基础练习先把“工作簿 → 工作表 → 行 → 单元格”的定位链路记清楚后续再补充类型处理会更稳。六、项目中的后续使用当前项目已经在 ReportServiceImpl 中使用 POI 读取运营数据报表模板先加载运营数据报表模板.xlsx再按工作表名取得 sheet随后定位固定行和单元格填入营业额、订单完成率、新增用户等数据最后把工作簿写到 HTTP 响应输出流。这说明报表导出并没有脱离本节基础它只是把“自己创建工作簿”换成了“读取现成模板”再按行列坐标填充数据。先掌握本节的读写操作后面理解模板报表会轻松很多。总结Apache POI 操作 XLSX 的核心结构是工作簿、工作表、行和单元格。写文件时从内存对象逐层创建后输出到磁盘读文件时从输入流加载后逐层定位并取值。记住下标从 0 开始并及时关闭工作簿和流就能完成最基础的 Excel 读写。

相关新闻

UDS统一诊断全解|ISO14229协议深度剖析、四大量产落地场景、AUTOSAR DCM全功能工程代码赋能车载诊断开发与OTA升级

UDS统一诊断全解|ISO14229协议深度剖析、四大量产落地场景、AUTOSAR DCM全功能工程代码赋能车载诊断开发与OTA升级

目录 一、前言:UDS诊断行业价值与开发者痛点 二、UDS核心定义与ISO14229协议体系详解 2.1 UDS通俗核心释义 2.2 UDS分层协议架构 2.3 客户端-服务器(C/S)通信模型 2.4 三大核心诊断会话模式 三、量产高频六大UDS核心服务深度解析 3.1 0x19 ReadDTCInformation 读取故…

2026/7/22 21:39:46 阅读更多 →
嵌入式系统高速启动:GPIO与XINTF并行引导模式深度解析

嵌入式系统高速启动:GPIO与XINTF并行引导模式深度解析

1. 项目概述与引导模式核心价值 在嵌入式系统开发中,Bootloader(引导加载程序)是系统上电后运行的第一段代码,其重要性不亚于应用程序本身。它就像一位尽职尽责的“系统唤醒师”,负责在CPU从复位状态苏醒后&#xff0c…

2026/7/22 9:59:30 阅读更多 →
麻将的历史演变与现代发展

麻将的历史演变与现代发展

1. 麻将的起源与早期发展 麻将作为中国传统游戏的代表,其历史可以追溯到19世纪中叶的江南地区。关于麻将的起源,学界普遍认为它是在明代叶子戏和清代马吊牌的基础上逐步演变而来。最早的麻将牌是用竹片或骨片手工雕刻而成,牌面图案也相对简单…

2026/7/21 7:57:16 阅读更多 →

最新新闻

【企业级AI办公落地白皮书】:覆盖财务/HR/行政/法务4大部门,含17个可即插即用Prompt模板

【企业级AI办公落地白皮书】:覆盖财务/HR/行政/法务4大部门,含17个可即插即用Prompt模板

更多请点击: https://codechina.net 第一章:企业级AI办公落地的总体架构与实施路径 企业级AI办公系统并非单一模型或工具的简单叠加,而是融合基础设施、数据治理、智能服务与安全合规的一体化工程。其总体架构分为四层:底层为云原…

2026/7/23 21:44:02 阅读更多 →
想发SCI,先把读文献这关过了

想发SCI,先把读文献这关过了

想发SCI,先把读文献这关过了师弟师妹们大家好,我是你们博三的师兄。今天不整虚的,我们就聊聊怎么发出自己的第一篇SCI。好多人跑来问我,说师兄我打开文档脑子一片空白。我一问,文献都没读几篇就想硬写,那能…

2026/7/23 21:44:02 阅读更多 →
台球三大玩法技术向深度解析:中式八球、九球、斯诺克的规则体系与策略差异

台球三大玩法技术向深度解析:中式八球、九球、斯诺克的规则体系与策略差异

作为一名程序员/技术爱好者,你可能已经习惯了用结构化思维理解复杂系统。今天,我们就用同样的方式,来拆解台球世界的三大主流玩法——中式八球、九球、斯诺克。本文将从规则架构、算法逻辑(击球路径计算)、策略博弈三个…

2026/7/23 21:44:02 阅读更多 →
【仅剩47份】AI数据可视化高阶训练营内部讲义泄露版:含LLM自动生成图表Prompt库+异常模式识别热力图算法

【仅剩47份】AI数据可视化高阶训练营内部讲义泄露版:含LLM自动生成图表Prompt库+异常模式识别热力图算法

更多请点击: https://codechina.net 第一章:AI数据可视化的核心范式与演进脉络 AI数据可视化已从静态图表呈现跃迁为以模型可解释性、人机协同决策和实时语义理解为核心的动态交互范式。早期工具如Matplotlib和Seaborn聚焦于统计图形的精确渲染&#xf…

2026/7/23 21:44:02 阅读更多 →
【AI流程图制作黄金法则】:20年架构师亲授5大避坑指南,90%新手第1步就错了

【AI流程图制作黄金法则】:20年架构师亲授5大避坑指南,90%新手第1步就错了

更多请点击: https://codechina.net 第一章:AI流程图制作的核心认知与底层逻辑 AI流程图并非传统绘图工具的简单延伸,而是对智能系统决策链路、数据流向与模型交互关系的形式化建模。其本质是将非结构化的算法逻辑、异构组件依赖和动态运行时…

2026/7/23 21:44:02 阅读更多 →
2026中文论文工具排行榜[特殊字符]7款主流平台全维度横评|查重/降重/AI写作/性价比实测

2026中文论文工具排行榜[特殊字符]7款主流平台全维度横评|查重/降重/AI写作/性价比实测

查重免费是套路还是真福利? 双检测时代(重复率AIGC)哪款工具最稳? 开题/写作/排版/答辩一站式工具怎么选不踩坑? 2026最新实测榜单出炉✅学生党高性价比闭眼入 关键词:PaperXie、论文工具排行、中文论文…

2026/7/23 21:43:02 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻