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的基本使用,具体使用需要根据实际项目进行实现。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python爬虫进阶:爬取在线电视剧信息与高级检索

简介&#xff1a; 本文将向你展示如何使用Python创建一个能够爬取在线电视剧信息的爬虫&#xff0c;并介绍如何实现更高级的检索功能。我们将使用requests和BeautifulSoup库来爬取数据&#xff0c;并使用pandas库来处理和存储检索结果。 目录 一、爬取在线电视剧信息 …

[ai笔记13] 大模型架构对比盘点:Encoder-Only、Decoder-Only、Encoder-Decoder

欢迎来到文思源想的ai空间&#xff0c;这是技术老兵重学ai以及成长思考的第13篇分享&#xff01; 最近看完《这就是chatgpt》对于大语言模型的三种架构演进图印象颇深&#xff0c;今日就专题盘点一下三种大模型架构理论&#xff0c;同时做一个简单对比。 1 Encoder-Only架构 …

day4:对话框与事件

使用qt搭建一个简易的闹钟系统 #include "second.h" #include "ui_second.h"second::second(QWidget *parent) :QWidget(parent),ui(new Ui::second) {ui->setupUi(this);this->setWindowFlag(Qt::FramelessWindowHint);this->setAttribute(Qt::…

基于yolov5的电瓶车和自行车检测系统,可进行图像目标检测,也可进行视屏和摄像检测(pytorch框架)【python源码+UI界面+功能源码详解】

功能演示&#xff1a; 基于yolov5的电瓶车和自行车检测系统_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基于yolov5的电瓶车和自行车检测系统是在pytorch框架下实现的&#xff0c;这是一个完整的项目&#xff0c;包括代码&#xff0c;数据集&#xff0c;训练好的模型…

【Linux】部署前后端分离项目---(Nginx自启,负载均衡)

目录 前言 一 Nginx&#xff08;自启动&#xff09; 2.1 Nginx的安装 2.2 设置自启动Nginx 二 Nginx负载均衡tomcat 2.1 准备两个tomcat 2.1.1 复制tomcat 2.1.2 修改server.xml文件 2.1.3 开放端口 2.2 Nginx配置 2.2.1 修改nginx.conf文件 2.2.2 重启Nginx服务 2…

代码随想录刷题笔记 DAY 32 | K 次取反后最大化的数组和 No.1005 | 加油站 No.134 | 分发糖果 No.135

文章目录 Day 3201. K 次取反后最大化的数组和&#xff08;No. 1005&#xff09;1.1 题目1.2 笔记1.3 代码 02. 加油站&#xff08;No. 134&#xff09;2.1 题目2.2 笔记2.3 代码 03. 分发糖果&#xff08;No. 135&#xff09;3.1 题目3.2 笔记3.3 代码 Day 32 01. K 次取反后…

测试C#使用PuppeteerSharp将网页生成PDF文件

微信公众号“DotNet开发跳槽”、“dotNET跨平台”、“DotNet”发布了几篇将网页生成图片或pdf文件的文章&#xff08;参考文献2-5&#xff09;&#xff0c;其中介绍了使用puppeteer-sharp、Select.HtmlToPdf、iTextSharp等多种方式实现html转图片或pdf&#xff0c;正好最近有类…

探秘SuperCLUE-Safety:为中文大模型打造的多轮对抗安全新框架

探秘SuperCLUE-Safety&#xff1a;为中文大模型打造的多轮对抗安全新框架 进入2023年以来&#xff0c;ChatGPT的成功带动了国内大模型的快速发展&#xff0c;从通用大模型、垂直领域大模型到Agent智能体等多领域的发展。但是生成式大模型生成内容具有一定的不可控性&#xff0…

本地部署ChatGPT

发布一下我之前做的一个本地大模型部署,不需要API key,但要有自己的账号 利用Docker 的Pandora做本地ChatGPT模型部署 先下载安装Docker,设置好运行如下 会要求升级核心,cmd运行如下命令就OK 安装Pandora 再管理员cmd中输入如下命令拉取Pandora镜像 docker pull pengzhi…

SpringBoot -【BeanFactory】基础使用及应用场景

1.介绍 在 Spring 框架中&#xff0c;BeanFactory 是 Spring IoC 容器的核心接口&#xff0c;负责管理 bean 的创建、配置和装配。它是 Spring IoC 容器的基础。BeanFactory 接口定义了一系列方法&#xff0c;用于管理和访问容器中的 bean 对象。 BeanFactoryAware 用于在 Sp…

AD24-Gerber生产文件输出及整理

一、Gerber生产文件输出 1、先进行规则检查 2、Gerber Files输出 3、钻孔文件 4、IPC网表 5、坐标文件 二、Gerber Flies文件整理 1、CAM 2、SMT 3、ASM 4、PRJ 5、DXF

Django定时任务之django_apscheduler使用

Django定时任务之django_apscheduler使用 今天在写一个任务需求时需要用到定时任务来做一部分数据处理与优化&#xff0c;于是在了解完现有方法&#xff0c;结合自己需求决定使用django_apscheduler&#xff0c;记录一下过程&#xff0c;有几篇值得参考的文章放在结尾&#xf…

8.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-游戏底层功能对接类GameProc的实现

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;通过逆向分析确定游戏明文接收数据过程 码云地址&#xff08;master 分支&#xff09;&#xff1a;https://gitee.com/dye_your_fingers/titan 码云版本号&#xff1a;bcf7559184863febdcad819e48aaa…

应用配置管理

一、Pod 配置管理 可变配置用 ConfigMap&#xff1b; 敏感信息用 Secret&#xff1b; 身份认证用 ServiceAccount 这几个独立的资源来实现的&#xff1b; 资源配置用 Resources&#xff1b; 安全管控用 SecurityContext&#xff1b; 前置校验用 InitContainers 这几个在 …

在VSCode中新配置一个ros项目

如何从零开始配置一个ros项目 预先准备初始化ros工程运行hello_ros进行第一个示例进行编译测试 预先准备 首先要在vscode中安装&#xff08;必须安装的&#xff09;&#xff1a;ros&#xff0c;c&#xff0c;cmake&#xff0c;cmake tools&#xff08;补全camkelist文件&#…

Mcal篇 配置Dio模块输出

1、打开EB&#xff0c;新建工程 AUTOSAR version 4.0.3 2、导入Mcu 、Dio、Port三个模块 发现 verify 选项是灰色&#xff0c;重启EB verify&#xff0c;0 Errors 0 Warnings 验证OK 3、配置 clock 时钟 4、配置Dio 目标是 配置15.0~15.3 四个引脚 输出 改为DioPort_…

第2.5章 StarRocks表设计——行列混存表

注&#xff1a;本篇文章阐述的是StarRocks- 3.2.3版本的行列混存表 一、概述 1.1 背景 StarRocks 基于列存格式引擎构建&#xff0c;在高并发场景&#xff0c;用户希望从系统中获取整行数据。当表宽时&#xff0c;列存格式将放大随机IO和读写。自3.2.3开始&#xff0c;StarRo…

DDS通信协议

DDS&#xff08;Data Distribution Service&#xff09;是一套通信协议和 API 标准&#xff1b;它提供了以数据为中心的连接服务&#xff0c;基于发布者-订阅者模型。这是一套中间件&#xff0c;它提供介于操作系统和应用程序之间的功能&#xff0c;使得组件之间可以互相通信。…

Qt Creator如何快速添加函数说明

/***************************************************************** *函数名称&#xff1a;Name *功能描述&#xff1a;详细描述 *参数说明&#xff1a;参数说明 *返回值&#xff1a; 返回值说明 ******************************************************************/

图像生成评价指标:Inception Score和 FID 的定义,区别,联系。

IS&#xff08;Inception Score&#xff09;和FID&#xff08;Frechet Inception Distance score&#xff09;的定义&#xff0c;区别&#xff0c;联系&#xff1a; IS&#xff08;Inception Score&#xff09; 定义&#xff1a; IS基于Google的预训练网络Inception Net-V3。…