快速上手Apache POI

news2025/1/12 17:27:22

 哈喽~大家好,这篇我们来看看快速上手Apache POI。

 🥇个人主页:个人主页​​​​​                       

🥈 系列专栏:【日常学习上的分享】

🥉与这篇相关的文章:                       

Redis快速入门及在Java中使用RedisRedis快速入门及在Java中使用Redis_程序猿追的博客-CSDN博客
为什么不推荐使用Lombok?@Data不香吗?为什么不推荐使用Lombok?@Data不香吗?-CSDN博客
Mybatis报错: Parameter ‘XXX‘ not found. Available parameters are [arg1, arg0, param1, param2]解决方案及问题原因Mybatis报错: Parameter ‘XXX‘ not found. Available parameters are [arg1, arg0, param1, param2]解决方案及问题原因-CSDN博客

目录

 一、前言

1、什么是Apache POI?

2、它的应用场景

二、快速入门

1、写入操作

2、读取数据


 一、前言

1、什么是Apache POI?

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

2、它的应用场景

例如银行网银系统导出交易明细、各种业务系统导出Excel报表、批量导入业务数据等。

二、快速入门

Apache POI既可以将数据写入Excel文件,也可以读取Excel文件中的数据,接下来分别进行实现。

首先要使用Apache POI,先导入它的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>

1、写入操作

将数据写入到Excel文件当中。

    public static void write() throws Exception {

        // 在内存中创建一个Excel文件
        XSSFWorkbook excel = new XSSFWorkbook();
        // 在Excel文件中创建一个sheet页
        XSSFSheet sheet = excel.createSheet("info1");
        // 在sheet中创建行对象,row从0开始
        XSSFRow row = sheet.createRow(0);
        // 创建单元格并且写入文件内容
        row.createCell(0).setCellValue("name");
        row.createCell(1).setCellValue("age");
        row.createCell(2).setCellValue("password");

        row = sheet.createRow(1);

        row.createCell(0).setCellValue("zhangsan");
        row.createCell(1).setCellValue("29");
        row.createCell(2).setCellValue("123456");

        // 通过输出流将内存中的excel文件写入到磁盘当中
        FileOutputStream out = new FileOutputStream("盘符名:\\***\\123.xlsx");
        excel.write(out);

        // 关闭资源
        out.close();
        excel.close();

    }

扩:

POI提供了HSSF、XSSF以及SXSSF三种方式操作Excel。
HSSF:Excel97-2003版本,扩展名为.xls。一个sheet最大行数65536,最大列数256。
XSSF:Excel2007版本开始,扩展名为.xlsx。一个sheet最大行数1048576,最大列数16384。
SXSSF:是在XSSF基础上,POI3.8版本开始提供的支持低内存占用的操作方式,扩展名为.xlsx。

createSheet在Excel文件中创建一个sheet页,createRow在sheet中创建行对象,row从0开始。

createCell创建单元格,setCellValue写入文件内容。

此方法(write)的作用为通过POI创建Excel文件并且写入文件内容,启动一下,见效果:

打开来看看。

2、读取数据

将Excel文件当中的数据读取出来并输出。

    public static void read() throws Exception {

        // 读取磁盘上面已经存在的Excel文件
        XSSFWorkbook excel = new XSSFWorkbook(new FileInputStream("盘符名:\\***\\123.xlsx"));

        // 读取Excel文件里面的第一个sheet页
        XSSFSheet sheet = excel.getSheetAt(0);

        // 获取最后一行有数据的文件
        int lastRowNum = sheet.getLastRowNum();

        for (int i = 0; i <= lastRowNum; i++) {
            // 获取某一行
            XSSFRow row = sheet.getRow(i);
            String cellValue1 = row.getCell(0).getStringCellValue();
            String cellValue2 = row.getCell(1).getStringCellValue();
            String cellValue3 = row.getCell(2).getStringCellValue();

            System.out.println(cellValue1 + "\t" + cellValue2 + "\t" + cellValue3);
        }

        // 关闭资源
        excel.close();

    }

效果展示

项目实际效果

在某某系统里面,有个数据导出功能,点击之后将相关数据导出

前端路径为/export,控制层接收,将数据传到业务层,然后进行xxx操作,然后通过输出流将Excel文件下载到客户端浏览器,最后关闭资源,完成操作。

不积跬步无以至千里,趁年轻,使劲拼,给未来的自己一个交代!向着明天更好的自己前进吧!

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

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

相关文章

你写过的最蠢的代码是?——一起探讨编程的奇葩时刻

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页: &#x1f405;&#x1f43e;猫头虎的博客&#x1f390;《面试题大全专栏》 &#x1f995; 文章图文并茂&#x1f996…

常见web信息泄露

一、源码(备份文件)泄露 1、git泄露 Git是一个开源的分布式版本控制系统&#xff0c;在执行git init初始化目录的时候&#xff0c;会在当前目录下自动创建一个.git目录&#xff0c;用来记录代码的变更记录等。发布代码的时候&#xff0c;如果没有把.git这个目录删除&#xff…

CCF CSP认证 历年题目自练 Day20

题目一 试题编号&#xff1a; 201903-1 试题名称&#xff1a; 小中大 时间限制&#xff1a; 1.0s 内存限制&#xff1a; 512.0MB 问题描述&#xff1a; 题目分析&#xff08;个人理解&#xff09; 常规题目&#xff0c;先看输入&#xff0c;第一行输入n表示有多少数字&am…

Rabbitmq安装-docker版

1.简介 2.安装消息队列 下载地址https://www.rabbitmq.com/download.html 使用docker方式安装 需要先下载docker&#xff0c;参考文章https://blog.csdn.net/weixin_43917045/article/details/104747341?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22arti…

基于SSM在线医疗服务系统+jsp【附开题|万字文档(LW)和搭建文档】

主要功能 前台登录&#xff1a; 注册用户&#xff1a;用户名、密码、姓名、联系电话 注册医生&#xff1a;医生工号、密码、医生姓名、职称、联系电话、邮箱 用户&#xff1a; ①首页、药品推荐、新闻资讯、健康资讯展示 ②医生坐诊、个人介绍、评价、预约挂号、点我收藏、药品…

实现map和set

map和set的底层就是红黑树&#xff0c;所以只要实现了红黑树&#xff0c;就可以考虑封装出map和set。所以本文会重点介绍我是如何一步步封装map和set&#xff0c;就不会再介绍红黑树的实现&#xff0c;实现可看我上篇博客&#xff0c;个人觉得封装中最麻烦的就是模板参数和迭代…

linux系统的启动流程

目录 简述linux的启动流程 git简介 Linux文件 Ubuntu文件汇总 linux文件属性 Linux命令行 更换软件源 简述linux的启动流程 韦东山课程学习路线&#xff1a;APP应用--DEV驱动--项目。 百问网官网 git资料&#xff1a;https://e.coding.net/weiongshan/01_all_series_qu…

来看看这个JS题输出什么?教你通过断电调试一步步看原因

&#x1f3b6;让我们调试看看这段代码 var foo { n: 1 };(function (foo) {console.log(foo.n) foo.n 3var foo { n: 2 }foo.n 4console.log(foo.n)})(foo)console.log(foo.n);&#x1f367;输出结果 &#x1f3a1;调试解析 &#x1f389;第一步 &#x1f38f;第二步 ✨第…

新一代网络框架UringNet,基于最新的异步I/O

介绍 在去年的一篇文章中&#xff0c;笔者曾经提到了最新一代的网络I/O框架UringNet。具体内容可以参考Rings’ Power,性能“世界第一”的Web I/O框架。这是基于最新Linux内核的异步I/O组件io_uring开发的网络框架。由于采用了最新的异步框架&#xff0c;因此在同等硬件配置条件…

五款可替代163邮箱的电子邮件服务

在众多邮箱品牌中&#xff0c;163邮箱作为中国最早的邮箱服务提供商之一&#xff0c;其出海之路并不顺利。本文将探讨163邮箱出海的劣势&#xff0c;并介绍一些替代品&#xff0c;以帮助用户更好地选择适合自己的邮箱服务。 “163邮箱的替代品有哪些&#xff1f;外贸行业适合选…

指针详解第二部分

目录 1. 数组名的理解 2. 使⽤指针访问数组 3. ⼀维数组传参的本质 4. 冒泡排序 5. ⼆级指针 6. 指针数组 7. 指针数组模拟⼆维数组 1. 数组名的理解 首先先看一个代码 #include <stdio.h> int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };printf("&a…

Java8 Lambda.stream.sorted() 方法使用浅析分享

文章目录 Java8 Lambda.stream.sorted() 方法使用浅析分享sorted() 重载方法一升序降序 sorted() 重载方法二升序降序多字段排序 mock代码 Java8 Lambda.stream.sorted() 方法使用浅析分享 本文主要分享运用 Java8 中的 Lambda.stream.sorted方法排序的使用&#xff01; sorted…

UE 4.27.2 和 UE 5.3.1 自定义模块出现的问题

目录 UE4.27.2 和 UE5.3.1 自定义模块的区别无法打开 uproject&#xff0c;无法使用 uproject 右键菜单重建 vs 项目时&#xff0c;怎么重建 vs 项目创建 Module 需要注意的地方为什么是 Modules/ModuleManager.h为什么 UE 5.3.1 报错找不到 Modules/ModuleManager.h怎么验证自…

初识jdbc

java中的数据存储技术 在Java中&#xff0c;数据库存取技术可分为如下几类&#xff1a; JDBC直接访问数据库 JDO (Java Data Object )技术 第三方O/R工具&#xff0c;如Hibernate, Mybatis 等 JDBC是java访问数据库的基石&#xff0c;JDO、Hibernate、MyBatis等只是更好的封…

大数据-玩转数据-双流JOIN

一、双流JOIN 在Flink中, 支持两种方式的流的Join: Window Join和Interval Join 二、Window Join 窗口join会join具有相同的key并且处于同一个窗口中的两个流的元素. 注意: 1.所有的窗口join都是 inner join, 意味着a流中的元素如果在b流中没有对应的, 则a流中这个元素就不会…

已解决 Bug——IndexError: index 3 is out of bounds for axis 0 with size 3问题

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页: &#x1f405;&#x1f43e;猫头虎的博客&#x1f390;《面试题大全专栏》 &#x1f995; 文章图文并茂&#x1f996…

Django之ORM操作初了解

文章开篇&#xff0c;我们首先复习下Django架构中的MTV模式&#xff0c;分别以字母来翻译就是&#xff1a; Views-代码的核心逻辑Tamplates-展示在页面上的html代码Models-对数据库的操作 那么Models中最为核心的便是本篇所介绍的ORM。 一&#xff09;基本知识 ORM&#xf…

Word-首行缩进2字符设置只缩进一个汉字的问题

1.点击“文件”中的“选项” 2.点击“选项”中的“语言” 将 中文&#xff08;简体&#xff09;<首选> 放在第一个即可

【量化】量化原理浅析

前言 模型在端侧运行时&#xff0c;会追求模型保持原有精度的同时&#xff0c;让模型的运行速度更快。基本方向为模型压缩和加速&#xff0c;着力于减少网络参数量、降低计算复杂度。可通过以下方式实现&#xff1a; 针对网络结构本身进行改进&#xff0c;常用的3x3的卷积的叠加…

已解决 Bug——SyntaxError: Unexpected token o in JSON at position 1问题

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页: &#x1f405;&#x1f43e;猫头虎的博客&#x1f390;《面试题大全专栏》 &#x1f995; 文章图文并茂&#x1f996…