Apache POI快速入门

介绍

Apache POl是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。
一般情况下,POI都是用于操作 Excel 文件。

Apache POI的主要组件包括

  • HSSF(Horrible SpreadSheet Format):用于操作Excel文件的.xls格式。
  • XSSF(XML SpreadSheet Format):用于操作Excel文件的.xlsx格式。
  • HWPF(Horrible Word Processor Format):用于操作Word文件的.doc格式。
  • XWPF(XML Word Processor Format):用于操作Word文件的.docx格式。
  • HSLF(Horrible SlideShow Format):用于操作PowerPoint文件的.ppt格式。
  • XSLF(XML SlideShow Format):用于操作PowerPoint文件的.pptx格式。

Apache POI的应用场景

  • 银行网银系统导出交易明细
  • 各种业务系统导出Excel报表
  • 批量导入业务数据

使用步骤

  1. 导入Apache POI的maven坐标
	    <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency>
  1. 将数据写入到Excel文件中
/*** 创建并写入Excel文件的方法* 此方法创建一个Excel工作簿,添加一张工作表,并写入一些数据,最后将工作簿保存到指定的文件路径* @throws Exception 如果在文件写入过程中发生错误,则可能抛出异常*/public static void write() throws Exception {// 创建一个Excel工作簿XSSFWorkbook sheets = new XSSFWorkbook();// 创建一张名为"jacky"的工作表XSSFSheet sheet = sheets.createSheet("jacky");// 创建第一行,并在该行的第1、2列写入表头信息XSSFRow row = sheet.createRow(1);row.createCell(1).setCellValue("名字");row.createCell(2).setCellValue("年龄");// 创建第二行,并在该行的第1、2列写入名字和年龄数据row = sheet.createRow(2);row.createCell(1).setCellValue("jacky");row.createCell(2).setCellValue(18);// 创建第三行,并在该行的第1、2列写入名字和年龄数据row = sheet.createRow(3);row.createCell(1).setCellValue("tom");row.createCell(2).setCellValue(19);// 创建文件输出流,用于将Excel工作簿写入到E盘的test.xlsx文件FileOutputStream fileOutputStream = new FileOutputStream(new File("E:\\test.xlsx"));// 将Excel工作簿写入到输出流中sheets.write(fileOutputStream);// 刷新输出流,确保所有数据被写入文件fileOutputStream.flush();// 关闭输出流,释放系统资源fileOutputStream.close();// 关闭Excel工作簿,释放系统资源sheets.close();}

代码运行后生成的Excel表格如下:
在这里插入图片描述
3. 读取Excel文件中的数据

 /*** 从Excel文件中读取数据并打印* 此方法演示了如何使用Apache POI库读取Excel文件的特定工作表中的数据* 它打开了一个Excel文件,读取了工作表中指定列的数据,并将其打印到控制台* * @throws Exception 如果文件输入输出操作或Excel文件处理中发生错误*/public static void read() throws Exception {// 创建FileInputStream以打开指定路径的Excel文件FileInputStream fileInputStream = new FileInputStream(new File("E:\\test.xlsx"));// 创建XSSFWorkbook对象以打开Excel工作簿XSSFWorkbook sheets = new XSSFWorkbook(fileInputStream);// 获取名为"jacky"的工作表XSSFSheet sheet = sheets.getSheet("jacky");// 获取工作表中的最后一行号,用于遍历所有数据行int lastRowNum = sheet.getLastRowNum();// 获取第一行数据,用于后续的逻辑判断XSSFRow row = sheet.getRow(1);// 读取并存储第一行的指定列的字符串类型单元格值String stringCellValue1 = row.getCell(1).getStringCellValue();String stringCellValue2 = row.getCell(2).getStringCellValue();// 打印读取到的字符串类型单元格值System.out.println(stringCellValue1 + ":" + stringCellValue2);// 遍历工作表中的所有数据行,从第二行开始,因为第一行通常为标题行for (int i = 2; i <= lastRowNum; i++) {// 获取当前行row = sheet.getRow(i);// 读取当前行的指定列的字符串类型单元格值String stringCellValue = row.getCell(1).getStringCellValue();// 读取当前行的指定列的数字类型单元格值double numericCellValue = row.getCell(2).getNumericCellValue();// 打印读取到的字符串类型和数字类型单元格值System.out.println(stringCellValue + ":" + numericCellValue);}// 关闭FileInputStream和XSSFWorkbook以释放资源fileInputStream.close();sheets.close();}

代码运行后控制台的输出结果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1549106.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

监控易监测对象及指标之:全面监控Sybase_New数据库

随着企业数据量的不断增长和业务的复杂化&#xff0c;数据库的稳定性和性能成为了保障业务连续性的关键因素。Sybase_New数据库作为众多企业选择的数据管理解决方案&#xff0c;其稳定性和性能对于企业的运营至关重要。 为了确保Sybase_New数据库的稳定运行和高效性能&#xff…

单体到微服务架构服务演化过程

架构服务化 聊聊从单体到微服务架构服务演化过程 单体分层架构 在 Web 应用程序发展的早期&#xff0c;大部分工程是将所有的服务端功能模块打包到单个巨石型&#xff08;Monolith&#xff09;应用中&#xff0c;譬如很多企业的 Java 应用程序打包为 war 包&#xff0c;最终会形…

基于vue框架的刺梨销售管理系统pgl49(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,刺梨分类,刺梨产品,刺梨新闻 开题报告内容 基于Vue框架的刺梨销售管理系统开题报告 一、引言 随着现代农业的快速发展和消费者对健康食品需求的日益增长&#xff0c;刺梨这一富含营养价值的水果逐渐受到市场的青睐。然而&#x…

学习Python的难点分析

一、语法灵活性带来的困惑 缩进规则 Python使用缩进来表示代码块&#xff0c;而不是像其他编程语言&#xff08;如C或Java&#xff09;使用大括号。这虽然使代码看起来简洁&#xff0c;但对于初学者来说可能会造成困扰。例如&#xff1a; if True:print("This is insid…

网站建设中,营销型网站与普通网站有什么区别

营销型网站与普通网站在建站目的、交互设计以及结构优化等方面存在区别。以下是具体分析&#xff1a; 建站目的 营销型网站&#xff1a;以销售和转化为主要目标&#xff0c;通过专业的市场分析和策划来吸引潜在客户&#xff0c;并促使其采取购买行动。普通网站&#xff1a;通常…

零基础学Servlet

零基础学Servlet 一。介绍&#xff1a; servlet是一种比较古老的编写网站的方式&#xff0c;在2010年之前比较流行&#xff0c;在此之后&#xff0c;有一堆大佬创造了Spring&#xff08;一种框架&#xff09;&#xff0c;Spring是针对Servlet进行进一步封装&#xff0c;从而让…

OpenSource - 开源日历库tui.calendar

文章目录 强大且灵活的开源日历库推荐&#xff1a;tui.calendar多视图支持&#xff1a; Monthly, Weekly, Daily and Various View Types支持拖拽: Dragging and Resizing a Schedule事件管理支持多语言集成与扩展高度定制化其他功能地址总结 强大且灵活的开源日历库推荐&#…

关于Chrome浏览器F12调试,显示未连接到互联网的问题

情况说明 最近笔者更新下电脑的Chrome浏览器&#xff0c;在调试前端代码的时候&#xff0c;遇到下面一个情况&#xff1a; 发现打开调试面板后&#xff0c;页面上显示未连接到互联网&#xff0c;但实际电脑网络是没有问题的&#xff0c;关闭调试面板后&#xff0c;网页又能正…

防砸安全鞋这样挑,舒适又安心!

在复杂多变的工作环境中&#xff0c;安全始终放在首位&#xff0c;特别是对于那些在工地、车间等危险环境中工作的朋友们来说&#xff0c;一双好的防砸安全鞋无疑是工作中的“守护神”。然而&#xff0c;市面上的防砸安全鞋种类繁多&#xff0c;如何挑选一双既舒适又安心的鞋子…

汇川技术即将在工博会发布类博途全集成自动化平台,德国研发中心功不可没,投资数亿打造工业利器

在即将拉开帷幕的9月中国工博会上&#xff0c;汇川技术将向世界展示其自主研发的全新成果——IFA&#xff0c;一个全集成、全场景覆盖的工厂自动化软件平台。这一平台的发布&#xff0c;不仅标志着汇川技术在工业自动化领域的又一里程碑式突破&#xff0c;更彰显了其与国际工业…

VS code Jupyter notebook 导入文件目录问题

VS code Jupyter notebook 导入文件目录问题 引言正文引言 这几天被 VS code 中 Jupyter Notebook 中的文件导入折磨的死去活来。这里特来说明一下放置于不同文件夹下的模块该如何被导入。 正文 首先,我们需要按下 Ctrl + , 键打开设置,然后搜索 notebook file root。在如…

五.海量数据实时分析-FlinkCDC+DorisConnector实现数据的全量增量同步

前言 前面四篇文字都在学习Doris的理论知识&#xff0c;也是比较枯燥&#xff0c;当然Doris的理论知识还很多&#xff0c;我们后面慢慢学&#xff0c;本篇文章我们尝试使用SpringBoot来整合Doris完成基本的CRUD。 由于 Doris 高度兼容 Mysql 协议&#xff0c;两者在 SQL 语法…

G2O (General Graph Optimization)

前言 以高翔的《视觉SLAM14讲》中的 g2o 拟合曲线为例&#xff0c;讲解 g2o 的使用。源文件为 g2oCurveFitting.cpp。 #include <iostream> #include <g2o/core/g2o_core_api.h> #include <g2o/core/base_vertex.h> #include <g2o/core/base_unary_edge.…

一文读懂:监督式微调(SFT)

监督式微调 (Supervised fine-tuning)&#xff0c;也就是SFT&#xff0c;就是拿一个已经学了不少东西的大型语言模型&#xff0c;然后用一些特定的、已经标记好的数据来教它怎么更好地完成某个特定的任务。就好比你已经学会了做饭&#xff0c;但是要特别学会怎么做川菜&#xf…

计算机网络的整体认识---网络协议,网络传输过程

计算机网络背景 网络发展 独立模式: 计算机之间相互独立; 网络互联: 多台计算机连接在一起, 完成数据共享; 局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起; 广域网WAN: 将远隔千里的计算机都连在一起;所谓 "局域网" 和 "广域网" 只是一个相…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-28

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-28 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-28目录前言1. Cognitive phantoms in LLMs through the lens of latent variables摘要研究背景问题与挑战创新点算法模型实验效果…

如何调整云桌面安装的虚拟机分辨率?

如何调整云桌面安装的虚拟机分辨率&#xff1f; 1. 编辑GRUB配置文件2. 修改分辨率3. 更新GRUB4. 重启虚拟机 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在云桌面环境中&#xff0c;虚拟机分辨率过低且无法调整时&#xff0c;可以通过以…

【React】react项目中的redux使用

1. store目录结构设计 2. react组件中使用store中的数据——useSelector 3. react组件中修改store中的数据——useDispatch 4. 示例 react-basic\src\store\moduels\counterStore.js import { createSlice } from reduxjs/toolkitconst counterStore createSlice({name: cou…

LeetCode讲解篇之15. 三数之和

文章目录 题目描述题解思路题解代码 题目描述 题解思路 这道题如果我们直接使用三层循环暴力搜索&#xff0c;时间复杂度是O(n3)&#xff0c;大概率会超时 那还有更优解吗&#xff0c;答案是绝对的&#xff0c;查询搜索想要优化&#xff0c;就要思考如何进行排除法加速搜索过…