SpringBootWeb 篇-入门了解 Apache POI 使用方法

news2024/11/24 14:45:16

🔥博客主页: 【小扳_-CSDN博客】
❤感谢大家点赞👍收藏⭐评论✍

文章目录

        1.0 Apache POI 概述

        2.0 使用 Apache POI 读写 Excel 文件

        2.1 写入 Excel 文件

        2.2 写入 Excel 文件代码演示

        2.3 读取 Excel 文件

        2.4 读取 Excel 文件代码演示


        1.0 Apache POI 概述

        Apache POI 是一个处理 Miscrosoft Office 各种文件格式的开源项目。简单来说就是,开源使用 POI 在 Java 程序中对 Miscrosoft Office 各种文件进行读写操作。

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

        2.0 使用 Apache POI 读写 Excel 文件

        2.1 写入 Excel 文件

        首先添加 Apache POI 依赖:

<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>

具体用到的方法:

        1)创建 XSSFWorkbook对象:

        使用 XSSFWorkbook 创建 XLSX 格式的 Excel 文件。

Workbook workbook = new XSSFWorkbook();

        2)创建工作表对象:

Sheet sheet = workbook.createSheet("Sheet1"); // 创建新的工作表

        3)创建行和单元格对象:

Row row = sheet.createRow(0); // 创建新的行
Cell cell = row.createCell(0); // 创建新的单元格

        4)设置具体的值:

cell.setCellValue("Hello, World!");//在单元格中写入的内容

        5)将在内存创建的 Excel 的文件保存到磁盘中:

FileOutputStream file = new FileOutputStream("example.xlsx");
workbook.write(file);

        2.2 写入 Excel 文件代码演示

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

@SpringBootTest(classes = {demo.demo2.class})

public class demo2 {

    /**
     * 写入 Excel 文件操作
     */
    public void write() throws IOException {

        //创建 XSSFWorkbook 对象
        XSSFWorkbook workbook = new XSSFWorkbook();
        //创建 Sheet 对象,指定名称 sheet1
        XSSFSheet sheet = workbook.createSheet("sheet1");
        //创建行,创建第二行的行对象
        XSSFRow row = sheet.createRow(1);
        //创建单元格,创建第二格单元格对象
        XSSFCell cell = row.createCell(1);
        //设置具体的值
        cell.setCellValue("姓名");

        //创建单元格,创建第三格单元格对象
        XSSFCell cell1 = row.createCell(2);
        //设置具体的值
        cell1.setCellValue("性别");

        //创建第三行对象
        XSSFRow row1 = sheet.createRow(2);
        //创建第二格对象
        XSSFCell cell2 = row1.createCell(1);
        cell2.setCellValue("小板");
        //创建第三格对象
        XSSFCell cell3 = row1.createCell(2);
        cell3.setCellValue("男");

        //创建第四行对象
        XSSFRow row2 = sheet.createRow(3);
        //创建第二格对象
        XSSFCell cell4 = row2.createCell(1);
        //设置具体的值
        cell4.setCellValue("童童");
        //创建第三格对象
        XSSFCell cell5 = row2.createCell(2);
        cell5.setCellValue("女");

        //将该 Excel 从内存中放到磁盘中
        //首先创建存放的文件
        FileOutputStream out = new FileOutputStream(new File("D:\\software\\code\\example.xlsx"));
        workbook.write(out);

        //最后需要关闭资源
        out.close();
        workbook.close();

    }
    @Test
    public void test11() throws IOException {
        write();
    }
}

运行结果:

        2.3 读取 Excel 文件

        首先需要添加 POI 库的依赖,在前面写入 Excel 文件中已经添加了,这里就没有必要继续添加依赖了。

<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>

相关的方法:

        1)指定读取的 Excel 文件:

        通过 new File("路径") Flie 对象作为参数来指定要读取的 Excel 文件。

FileInputStream file = new FileInputStream(new File("sample.xlsx"));
Workbook workbook = WorkbookFactory.create(file);

        2)获取 Sheet 对象:

        根据索引或者名字来获取指定的 Sheet 对象。

//通过名字来获取
XSSFSheet sheet1 = workbook.getSheet("指定名字来获取");
//通过索引来获取
XSSFSheet sheet2 = workbook.getSheetAt(0);

        3)获取 Row 对象

        根据索引来获取 Row 对象。

XSSFRow row = sheet.getRow(1);

        获取 Sheet 最后一行的行数。

int lastRowNum = sheet.getLastRowNum();

        4)获取单元格对象

        根据索引来获取 Cell 对象。

XSSFCell cell = row.getCell(1);

        5)获取到单元格中的值

        通过 cell.getStringCellValue() 方法来获取单元格中的值。

String stringCellValue = cell.getStringCellValue();

        2.4 读取 Excel 文件代码演示

    public void read() throws Exception {
        //创建字节输入流文件对象
        File file = new File("D:\\software\\code\\example.xlsx");
        FileInputStream in = new FileInputStream(file);

        //再进一步封装
        XSSFWorkbook workbook = new XSSFWorkbook(in);
        //获取 Sheet 对象,根据索引获取
        XSSFSheet sheet = workbook.getSheetAt(0);

        //获取Row对象
        //获取最后一行的行数
        int lastRowNum = sheet.getLastRowNum();
        for (int i = 1; i <= lastRowNum ; i++) {
            XSSFRow row = sheet.getRow(i);
            String stringCellValue1 = row.getCell(1).getStringCellValue();
            String stringCellValue2 = row.getCell(2).getStringCellValue();
            System.out.println(stringCellValue1 + " " + stringCellValue2);
        }
        
        //最后关闭资源
        workbook.close();
        in.close();
    }

    @Test
    public void test12() throws Exception {
        read();
    }

运行结果:

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

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

相关文章

胡说八道(24.6.9)——离散时间系统及simulink仿真

上回说道拉普拉斯变换的定义、性质以及在电路分析中的应用。今天先来谈谈simulink仿真&#xff0c;可为是让我非常的震惊&#xff0c;今天做了三种模型的应用。第一个是simulink中有限状态机的应用&#xff0c;用来解决一些复杂的逻辑问题&#xff0c;实现状态之间的转换。第一…

市场情绪周期2024-6-17(补涨回头潮视角验证)

竞价隔夜单 看长江通信&#xff0c;38亿涨到40亿又回落&#xff0c;那么周末最大的利好消息加持下&#xff0c;隔夜单不及预期&#xff0c;金溢科技 更是如此&#xff1b;空间板华闻集团8天7板&#xff0c;连扳5板&#xff0c;一字跌停&#xff0c;它也是有车联网的&#xff0c…

2V升6V升压恒流WT7012

2V升6V升压恒流WT7012 今天给大家介绍一款能驱动多达7串白光LED的升压转换器WT7012。 WT7012升压恒流应用&#xff1a;2V升6V升9V升12V恒流驱动。其通过外部电流检测电阻&#xff0c;采用电流控制模式以及固定的工作频率来控制LED电流&#xff0c;较低的反馈电压使得电流检测电…

Windows系统下制作Windows Server系统U盘启动及安装指导

Windows系统下制作Windows Server系统U盘启动及安装指导 一、准备工作 U盘不得小于8G(推荐使用usb3.0接口)&#xff1b;下载好对应的系统镜像&#xff1b;下载RUFUS或者软通碟U盘制作启动软件&#xff1b; 二、Windows操作系统下制作U盘启动&#xff08;这里以使用RUFUS软件…

Spring和SpringBoot(概述与功能)

目录 一、SpringBoot 概念 &#xff08;1&#xff09;基本介绍 &#xff08;2&#xff09;部分注解 &#xff08;3&#xff09;其它介绍 ​编辑 二、 Spring 缺点 &#xff08;1&#xff09;配置繁琐 &#xff08;2&#xff09;依赖繁琐 三、SpringBoot 功能&#xff0…

常见的Redis使用问题及解决方案

目录 1. 缓存穿透 1.1 解决方案 2. 缓存击穿 2.1 解决方案 3. 缓存雪崩 3.1 概念图及问题描述 ​编辑3.2 解决方案 4. 分布式锁 4.1 概念 4.2 基于redis来实现分布式锁 4.3 用idea来操作一遍redis分布式锁 4.4 分布式上锁的情况下&#xff0c;锁释放了服务器b中的锁…

教育培训系统(FastAdmin+ThinkPHP+Unipp)

引领学习新风尚 &#x1f4da; 引言&#xff1a;教育新篇章 随着科技的不断发展&#xff0c;教育形式也在不断创新与变革。教育培训系统作为这一变革的重要载体&#xff0c;正逐渐改变着我们的学习方式。今天&#xff0c;就让我们一起探索教育培训系统的魅力&#xff0c;看看它…

[ARM-2D 专题]3. ##运算符

C语言的宏系统相当强大&#xff0c;它允许使用##符号来处理预处理期的文本替换。这种用法被称为标记连接&#xff08;token pasting&#xff09;操作&#xff0c;其结果是将两个标记紧紧地连接在一起&#xff0c;而省略掉它们之间的所有空格。在复杂的宏定义中&#xff0c;运用…

部分CVE复现Web(1)

Apache HTTP Server 路径穿越漏洞CVE-2021-41773 ​ 首先&#xff0c;先来看一下这个漏洞的官方描述&#xff1a; ​ CVE-2021-41773 是在 Apache HTTP Server 2.4.49 中对路径规范化所做的更改中发现了一个缺陷。攻击者可以使用路径遍历攻击将 URL 映射到预期文档根目录之外的…

三星(中国)投资公司线上入职测评笔试邀请数字推理语言逻辑真题题库

三星&#xff08;中国&#xff09;有限公司北京分公司 邀请您参加 SHL线上笔试 具体安排如下&#xff1a; 笔试时间&#xff1a;周三 9:00 笔试时长&#xff1a;1.5h ~ 2h 笔试内容及要求&#xff1a;数字推理限时30min&#xff1b;语言逻辑限时30min&#xff1b;性格测试不…

国内外典型的知识图谱项目

文章目录 早期的知识库项目互联网时代的知识图谱中文开放知识图谱垂直领域知识图谱 从人工智能的概念被提出开始&#xff0c;构建大规模的知识库一直都是人工智能、自然语言理解等领域的核心任务之一。下面分别介绍早期的知识库项目、互联网时代的知识图谱、中文开放知识图谱和…

什么是Vue开发技术

概述 Vue.js 是一个用于构建用户界面的渐进式框架&#xff0c;它设计得非常灵活&#xff0c;可以轻松地被集成到任何项目中。 vue是视图的发音&#xff0c;其目的是帮助开发者易于上手&#xff0c;提供强大的功能构建复杂的应用程序 示例 以下是vue基本的语法概述 声明式渲…

激活和禁用Hierarchy面板上的物体

1、准备工作&#xff1a; (1) 在HIerarchy上添加待隐藏/显示的物体&#xff0c;名字自取。如&#xff1a;endImage (2) 在Inspector面板&#xff0c;该物体的名称前取消勾选&#xff08;隐藏&#xff09; (3) 在HIerarchy上添加按钮&#xff0c;名字自取。如&#xff1a;tip…

“深入探讨Redis主从复制:原理、配置与优化“

目录 # 概念 1. 配置主从同步步骤 1.1 创建文件夹 1.2 复制配置文件 1.3 配置文件关闭 1.4 查看端口号&#xff0c;发现端口号存在 1.5 连接三个端口号 1.6 查看主机运行情况 1.7 让服务器变成&#xff08;主机&#xff09;或&#xff08;从机&#xff09; 1.8 实现效…

HarmonyOS之自选股App

支持在 鸿蒙、安卓、苹果设备上运行。 1.界面效果展示 2.数据存储 数据存储采用的是官方的 ohos.data.relationalStore.relationalStore stock_code表用来存储A股市场5000多家公司的股票代码和名称等信息 const TAB_STOCK_CODE "stock_code" const CREATE_TABL…

关于IOMMU问题的扩展

关联CSDN&#xff1a; Steam Deck OLED WLAN下载速率过低问题的排查和解决-CSDN博客 前言 如前所述&#xff0c;Steam Deck OLED WLAN速率低问题和IOMMU有一定的关系&#xff0c;这里我们对IOMMU为什么会对速率有影响进行一个较深入的理解。 对于IOMMU我相信大家通过网上的…

java面试(企业场景)

设计模式 工厂方法模式 简单工厂模式 简单工厂包括以下角色&#xff1a; 抽象产品&#xff1a;定义了产品的规范&#xff0c;描述了产品的主要特性和功能具体产品&#xff1a;实现或者继承抽象产品的子类具体工厂&#xff1a;提供了创建产品的机会&#xff0c;调用者通过该…

自动采集软件||自动采集主流电商商品详情SKU数据价格功能实现||电商API接口的应用

实现自动化淘宝商品数据采集的方法有多种&#xff0c;一种常见的方式是利用网络 Python 技术。您可以编写一个网络 Python程序&#xff0c;通过模拟浏览器发送请求&#xff0c;获取淘宝商品页面的数据&#xff0c;并对数据进行解析和提取&#xff0c;最终存储到数据库或文件中。…

力扣172. 阶乘后的零

Problem: 172. 阶乘后的零 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.要使得末尾出现0&#xff0c;则乘式中必须出现因子2与5&#xff1b; 2.而由于对于一个数的阶乘&#xff0c;易知因子2的个数是大于因子5的个数&#xff08;因为只要出现偶数则可以分解出…

1V升3V升压LED驱动WT7013

1V升3V升压LED驱动WT7013 WT7013是一款专业的高亮度LED驱动芯片&#xff0c;其具备提供1A驱动电流以支持3W的LED设备运行的能力。此款芯片以其高效率和低功耗的特性&#xff0c;使其在适用于使用1到2个碱性电池或者锂电池供电的LED照明设备中表现卓越。 WT7013 还配备有开路保…