Apache POI技术-在Java中的基本使用

Apache POI技术-在Java中的基本使用

文章目录

  • Apache POI技术-在Java中的基本使用
  • 前言
  • 一、Apache POI是什么?
    • 1.Apache POI简介:
    • 2.Apache POI主要包括的模块:
    • 3.Apache POI 的应用场景:
      • 报表生成:
      • 数据导入导出:
      • 模板生成:
      • 自动化办公流程:
  • 二、Apache POI基本使用方法
    • 1.引入Maven坐标依赖
    • 2.将数据写入Excel文件
    • 3.读取Excel文件中的数据
  • 总结


前言

Apache POI(Poor Obfuscation Implementation)是Apache软件基金会的一个开源项目,提供了用于读写Microsoft Office格式文件(如Word文档、Excel表格、PowerPoint幻灯片)的Java API。POI技术使Java开发人员能够轻松地操作和处理Office文档,为他们提供了丰富的功能和灵活性。


一、Apache POI是什么?

1.Apache POI简介:

Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。
在这里插入图片描述

2.Apache POI主要包括的模块:

HSSF:用于操作Excel文件中的.xls格式的数据,提供了读写Excel文件的功能。
XSSF:用于处理Excel文件中的.xlsx格式的数据,支持Excel 2007及以上版本的文件。
HWPF:用于操作Word文件中的.doc格式的数据,提供了读写Word文件的功能。
XWPF:用于处理Word文件中的.docx格式的数据,支持Word 2007及以上版本的文件。
HSLF:用于操作PowerPoint文件中的.ppt格式的数据,提供了读写PowerPoint文件的功能。
XSLF:用于处理PowerPoint文件中的.pptx格式的数据,支持PowerPoint 2007及以上版本的文件。

一般情况下,POI 都是用于操作 Excel 文件。

3.Apache POI 的应用场景:

报表生成:

在企业应用中,经常需要生成各种类型的报表,如财务报表、销售报表等。Apache POI技术可以帮助开发人员轻松生成Excel或Word格式的报表,并实现自动化的数据填充和格式化。

数据导入导出:

在数据处理应用中,经常需要将数据从Excel或其他Office文件中读取,或者将数据写入到这些文件中。Apache POI技术提供了读写Excel、Word、PowerPoint等文件的API,能够方便地实现数据导入导出功能。

模板生成:

有时候需要根据特定的模板生成文档,如合同、报价单等。Apache POI技术可以帮助开发人员读取模板并进行修改,以生成符合需求的文档。

自动化办公流程:

在企业应用中,有些流程需要多个人协同完成,如审批流、报销流程等。Apache POI技术可以结合工作流引擎,实现自动化的办公流程,从而提高工作效率和精度。

二、Apache POI基本使用方法

1.引入Maven坐标依赖

<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.16</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.16</version>
</dependency>

2.将数据写入Excel文件

代码如下(示例):

/*** 通过poi创建一个excel文件,并写入数据*/public  static void write() throws Exception {//在内存中,创建一个excel文件XSSFWorkbook excel = new XSSFWorkbook();//在excel文件中创建sheet页XSSFSheet sheet = excel.createSheet("测试111");//在sheet页中创建行,rownum编号从0开始XSSFRow row = sheet.createRow(1);//创建单元格,并将数据写入单元格row.createCell(1).setCellValue("姓名");row.createCell(2).setCellValue("城市");//创建新行row = sheet.createRow(2);row.createCell(1).setCellValue("张三");row.createCell(2).setCellValue("北京");//再创建新行row = sheet.createRow(3);row.createCell(1).setCellValue("李四");row.createCell(2).setCellValue("南京");//创建输出流对象,将内存中的excel写入到磁盘FileOutputStream outputStream =  new FileOutputStream(new File("C:\\Users\\ABC\\Desktop\\info.xlsx"));excel.write(outputStream);//关闭资源outputStream.close();excel.close();}

实现效果:
在这里插入图片描述

3.读取Excel文件中的数据

代码如下(示例):

 /*** 通过poi读取excel文件内容*/public static void read() throws Exception{//获取输入流对象FileInputStream fileInputStream = new FileInputStream(new File("C:\\Users\\ABC\\Desktop\\info.xlsx"));//创建excel对象,读取excel文件XSSFWorkbook excel =  new XSSFWorkbook(fileInputStream);//读取excel文件中第一个sheet页XSSFSheet sheetAt = excel.getSheetAt(0);//获取excel中数据最后一行的行号int lastRowNum = sheetAt.getLastRowNum();//从第二行开始读for (int i = 1; i <= lastRowNum; i++) {//获得某一行数据XSSFRow row = sheetAt.getRow(i);//获得第二个单元格对象String cellValue1 = row.getCell(1).getStringCellValue();//获得第三个单元格对象String cellValue2 = row.getCell(2).getStringCellValue();//打印数据System.out.println(cellValue1+"  "+cellValue2);}//关闭资源fileInputStream.close();excel.close();}

实现效果:
在这里插入图片描述

总结

以上就是本文章的内容,本文仅仅简单介绍了Apache POI的基本使用,具体使用需要根据实际项目进行实现。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS—LocalStorage:页面级UI状态存储

LocalStorage是页面级的UI状态存储&#xff0c;通过Entry装饰器接收的参数可以在页面内共享同一个LocalStorage实例。LocalStorage也可以在UIAbility实例内&#xff0c;在页面间共享状态。 本文仅介绍LocalStorage使用场景和相关的装饰器&#xff1a;LocalStorageProp和LocalS…

高级统计方法 第1次作业

概念 1. 请解释什么是P值&#xff0c;怎么计算p值&#xff0c;p值结果怎么理解&#xff0c;p值有哪些应用......&#xff1f; &#xff08;a&#xff09;什么是P值 P值是一种用来判定假设检验结果的一个参数&#xff0c;它描述了在原假设为真的情况下&#xff0c;比所得到的…

【JavaScript】字符串的正则匹配和替换

文章目录 1. 字符串的正则匹配1.1 test() 方法1.2 match() 方法 2. 字符串的正则替换2.1 替换所有匹配项2.2 使用匹配组2.3 使用函数进行替换 3. 常见应用场景3.1 删除非数字字符3.2 格式化货币 4. 总结 在 JavaScript 中&#xff0c;字符串的正则匹配和替换是常见的操作&#…

【K-means聚类】

K-means聚类python代码实现 聚类k-means聚类代码 聚类 定义&#xff1a;聚类是一种无监督的机器学习方法&#xff0c;它的主要目的是将数据集中的对象&#xff08;或点&#xff09;按照它们之间的相似性分组或聚类。这些聚类&#xff08;或称为簇&#xff09;中的对象在某种度…

Docker技术仓库

数据卷 为什么用数据卷&#xff1f; 宿主机无法直接访问容器中的文件容器中的文件没有持久化&#xff0c;导致容器删除后&#xff0c;文件数据也随之消失容器之间也无法直接访问互相的文件 为解决这些问题&#xff0c;docker加入了数据卷机制&#xff0c;能很好解决上面问题…

FPGA模块——IIC接口设计

FPGA模块——IIC接口设计 IIC协议IIC接口代码应用IIC接口的代码 IIC协议 IIC接口代码 module iic_drive#(parameter P_ADDR_WIDTH 16 )( input i_clk ,//模块输入时钟input i_rs…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM驱动编程第八天-高级驱动framebuffer(物联技术666)

链接&#xff1a;https://pan.baidu.com/s/1cd7LOSAvmPgVRPAyuMX7Fg?pwd1688 提取码&#xff1a;1688 帧缓冲&#xff08;framebuffer&#xff09;设备应用于linux显示技术方面。因为linux的显示平台已经全部基于framebuffer&#xff0c;所以目前在linux环境下开发图形化界面…

python opencv图像模糊

目录 一:均值滤波 二:高斯滤波 三:中值滤波 四:双边滤波 在OpenCV中,模糊图片或进行图像平滑处理时常用的方法包括以下几种: 均值滤波 (Blurring): 均值滤波是一种简单的平滑方法,它通过对图像中每个像素的邻域内像素值进行平均来计算新的像素值。在OpenC

ABC341 题解

ABC341 题解 A Description 给定一个数 N N N&#xff0c;求长度 2 N 1 2N1 2N1 的 01 交替的字符串&#xff08;0 开始&#xff09;。 Solution 直接模拟&#xff0c;注意 0-index 是 i m o d 2 i\bmod 2 imod2&#xff0c;1-index 是 ( i 1 ) m o d 2 (i1) \bmod …

js-Vue Router 中的方法,父A-子B-子C依次返回,无法返回到A,BC中形成循环跳转解决

1.常用的方法 在 Vue Router 中&#xff0c;有一些常用的方法用于实现路由导航和管理。以下是一些常见的 Vue Router 方法及其作用&#xff1a; push: router.push(location, onComplete, onAbort) 作用&#xff1a;向路由历史记录中添加一个新条目&#xff0c;并导航到指定的路…

算法-位运算

题目&#xff1a;题目5 一个数组中有一种数出现K次&#xff0c;其他数都出现了M次&#xff0c; M > 1, K < M 找到&#xff0c;出现了K次的数&#xff0c; 要求&#xff0c;额外空间复杂度O(1)&#xff0c;时间复杂度O(N) 思路&#xff1a;遍历数组按位计数&#xff0c;不…

SRS关闭无人观看的流

这里需要使用到SRS自身自带的钩子回调功能&#xff0c;配置文件中有标注&#xff1a; Hook函数&#xff1a; 分为on_publish、on_play、on_stop、on_unpublish、on_dvr等类别&#xff1b; 其中主要介绍on_play、on_stop on_play&#xff1a; 主要用于用户在对srs拉流进行播…

十六进制数

1.做一个收电费程序&#xff0c;要求输入使用的电的度数&#xff08;整数&#xff09;以及电费单价&#xff08;实数&#xff09;&#xff0c;输出总的用电费用。 2.提示并输入一个小写字母数据&#xff0c;输出其对应的ASCII值&#xff0c;以及该小写字母对应的大写字母。 3.提…

Spring设计模式之工厂模式创建Bean对象

BeanFactory和Application是Spring容器中创建和管理Bean对象的接口&#xff0c;但是它们的实现方式不同。 BeanFactory&#xff1a; BeanFactory采用延迟初始化策略&#xff0c;只有应用程序向容器请求特定的Bean时才创建该Bean对象。它的启动速度很快&#xff0c;但在程序运…

MySQL、Redis、Nginx配置优化

文章目录 一、MySQL二、Redis三、Nginx 一、MySQL mysql.cnf [mysqld] binlog_cache_size 128K thread_stack 256K join_buffer_size 2048K max_heap_table_size 512Mdefault_storage_engine InnoDB performance_schema_max_table_instances 400 table_definition_cach…

leetcode hot100组合综合四

本题中&#xff0c;是要求nums中求的总和为target的排列数&#xff0c;因为题中说了&#xff0c;元素顺序不同&#xff0c;则可以视为不同的结果之一。 所以&#xff0c;根据对背包问题的总结&#xff0c;本题中元素可以重复使用&#xff0c;是完全背包并且需要求排列数&#…

.net 微服务 服务保护 自动重试 Polly

1. 概要 实验服务保护&#xff0c;自动重新连接功能。 2.代码 2.1 重复工具 using Polly; using Polly.Retry; using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Threading.Tasks;namespace WebApplication2 {pu…

c# DotNetty

对于 .NET 开发者来说&#xff0c;DotNetty 是一个开源、高性能的网络库&#xff0c;它是对 Java 平台上流行的 Netty 异步事件驱动网络应用程序框架的一个端口。DotNetty 适用于创建各种网络应用程序&#xff0c;如 IoT (物联网)、游戏服务器以及消息传递系统等。 以下是对 Do…

Redis之缓存击穿问题解决方案

文章目录 一、书接上文二、介绍三、解决方案1. 单例双检锁2. 缓存预热和定时任务 一、书接上文 Redis之缓存雪崩问题解决方案 二、介绍 缓存击穿就是大量并发访问同一个热点数据&#xff0c;一旦这个热点数据缓存失效&#xff0c;则请求压力都来到数据库。 三、解决方案 1…

Redis命令和Redisson对象匹配列表

大家好&#xff0c;Redisson系列再发一文。 多克创新国庆福利继续发&#xff0c;有需要的可以前往官网了解详情&#xff01;&#xff01;&#xff01; Redis命令Redisson对象方法AUTHConfig.setPassword();APPENDRBinaryStream.getOutputStream().write()BITCOUNTRBitSet.ca…