Apache POI(处理Miscrosoft Office各种文件格式)

文章目录

  • 一、Apache POI介绍
  • 二、应用场景
  • 三、使用步骤
    • 1.导入maven坐标
    • 2.写入代码讲解
    • 3.读取代码讲解
  • 总结


一、Apache POI介绍

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

一般情况下,POI 都是用于操作 Excel 文件。
在这里插入图片描述

二、应用场景

Apache POI 的应用场景:

  • 银行网银系统导出交易明细
    在这里插入图片描述

  • 各种业务系统导出Excel报表
    在这里插入图片描述

  • 批量导入业务数据
    在这里插入图片描述

三、使用步骤

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文件:

XSSFWorkbook excel=new XSSFWorkbook();

在Excel文件中创建一个Sheet页:

XSSFSheet sheet=excel.createSheet("info");

在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("北京");

通过输出流将内存中的Excel文件写入到磁盘:

FileOutputStream out=new FileOutputStream(new File("D:\\info.xlsx"));
excel.write(out);

关闭资源:

out.close();
excel.close();

全部代码如下:

package com.sky.test;import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.File;
import java.io.FileOutputStream;public class POITest {/*** 通过POI创建Excel文件并且写入文件内容*/public static void write() throws Exception{//在内存中创建一个Excel文件XSSFWorkbook excel=new XSSFWorkbook();//在Excel文件中创建一个Sheet页XSSFSheet sheet=excel.createSheet("info");//在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 out=new FileOutputStream(new File("D:\\info.xlsx"));excel.write(out);//关闭资源out.close();excel.close();}public static void main(String[] args) throws Exception{write();}}

效果如下:
在这里插入图片描述

3.读取代码讲解

创建文件读取流:

 InputStream in =new FileInputStream(("D:\\info.xlsx"));

读取磁盘上已经存在的Excel文件:

XSSFWorkbook excel=new XSSFWorkbook(in);

读取Excel文件中的第一个Sheet页:

XSSFSheet sheet=excel.getSheetAt(0);

获取Sheet中最后一行的行号:

int lastRowNum = sheet.getLastRowNum();

输出:

for(int i = 1; i <= lastRowNum ; i++){//获得某一行XSSFRow row = sheet.getRow(i);//获得单元格对象String cellValue1 = row.getCell(1).getStringCellValue();String cellValue2 = row.getCell(2).getStringCellValue();System.out.println(cellValue1+"  "+cellValue2);}

关闭资源:

in.close();
excel.close();

完整代码如下:

package com.sky.test;import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;public class POITest {/*** 通过POI创建Excel文件并且写入文件内容*/public static void write() throws Exception{//在内存中创建一个Excel文件XSSFWorkbook excel=new XSSFWorkbook();//在Excel文件中创建一个Sheet页XSSFSheet sheet=excel.createSheet("info");//在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 out=new FileOutputStream(new File("D:\\info.xlsx"));excel.write(out);//关闭资源out.close();excel.close();}/*** 通过POI读取Excel文件中的内容* @throws Exception*/public static void read() throws  Exception{//创建文件读取流InputStream in =new FileInputStream(("D:\\info.xlsx"));//读取磁盘上已经存在的Excel文件XSSFWorkbook excel=new XSSFWorkbook(in);//读取Excel文件中的第一个Sheet页XSSFSheet sheet=excel.getSheetAt(0);//获取Sheet中最后一行的行号int lastRowNum = sheet.getLastRowNum();for(int i = 1; i <= lastRowNum ; i++){//获得某一行XSSFRow row = sheet.getRow(i);//获得单元格对象String cellValue1 = row.getCell(1).getStringCellValue();String cellValue2 = row.getCell(2).getStringCellValue();System.out.println(cellValue1+"  "+cellValue2);}//关闭资源in.close();excel.close();}public static void main(String[] args) throws Exception{//write();read();}}

总结

以上就是Apache POI(处理Miscrosoft Office各种文件格式)的相关知识点,希望对你有所帮助。
积跬步以至千里,积怠惰以至深渊。时代在这跟着你一起努力哦!

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

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

相关文章

使用Python+Redis实现文章投票网站后端功能

1&#xff0e;实现投票功能&#xff0c;2&#xff0e;创建文章数据&#xff0c;3&#xff0e;对文章进行排序。 实现投票功能 实现投票功能&#xff0c;要注重文章的时效性与投票的公平性&#xff0c;所以需要给投票功能加上一些约束条件&#xff1a; 文章发布满一个星期后&…

【挑战业余一周拿证】一、亚马逊云科技简介 - 第 1 节 - 模块 1 简介

CSDN 官方中文视频&#xff08;免费&#xff09;&#xff1a;点击进入 一、亚马逊云科技简介 第 1 节 - 模块 1 简介 1、讲师&#xff1a;李锦鸿 部门&#xff1a;亚马逊云科技培训与认证部门 方向&#xff1a;从事数据中心及云计算相关产品与解决方案工作 课程&#xff…

ESP32基于IDF框架OTA学习记录

ESP32基于IDF框架OTA学习记录 参考&#xff1a; 空中升级 (OTA) - ESP32 - — ESP-IDF 编程指南 v5.1.1 文档 (espressif.com) 目录 ESP32基于IDF框架OTA学习记录1.分区表2.native_ota_example上手2.1配置分区表2.2配置OTA的bin文件2.3修改esp32的https证书验证方法2.4修改当…

计算机服务器中了faust勒索病毒怎么办,faust勒索病毒解密文件恢复

计算机技术的不断发展&#xff0c;为企业的生产生活运营提供了坚实基础&#xff0c;但网络是一把双刃剑&#xff0c;网络安全威胁也在不断增加&#xff0c;近期&#xff0c;云天数据恢复中心陆续接到很多企业的求助&#xff0c;企业的计算机服务器遭到了faust勒索病毒攻击&…

实用攻略——SD-WAN网络配置步骤详解

SD-WAN&#xff08;软件定义广域网&#xff09;作为一种新兴的网络技术&#xff0c;被广泛应用于构建高效、可靠的企业组网。 本文将详细介绍企业组网中SD-WAN涉及的配置过程&#xff0c;并提供一些配置技巧&#xff0c;以帮助企业快速了解企业组网的配置。通过使用SD-WAN技术&…

14.Tomcat和HTTP协议-[一篇通]

文章目录 1.HTTP 协议1.1HTTP 是什么1.2理解 "应用层协议"1.3理解 HTTP 协议的工作过程1.4HTTP 协议格式1.4.1抓包工具的使用(Fiddler)1.4.2抓包工具的原理1.4.3抓包结果1.4.4协议格式总结 1.5HTTP 请求 (Request)1.5.1认识 URL1.5.1.1URL 基本格式1.5.1.2关于 URL e…

服务器主机安全如何保障

随着互联网的快速发展&#xff0c;服务器主机安全问题日益凸显。服务器主机是网络世界中的核心&#xff0c;其安全性关乎着整个网络系统的稳定性和可靠性。 当前&#xff0c;服务器主机面临着多种安全威胁。其中&#xff0c;网络攻击是最为常见的一种。网络攻击者利用各种手段…

【密码学引论】密码学的基本概念

第二章 密码学的基本概念 1、密码学定义 密码编制学和密码分析学共同组成密码学 密码编制学&#xff1a;研究密码编制密码分析学&#xff1a;研究密码破译 2、密码体制的五个组成部分 明文空间M&#xff0c;全体明文的集合密文空间C&#xff0c;全体密文的集合密钥空间K&am…

10个提高CSS开发效率的Scss技巧与窍门

10个提高CSS开发效率的Scss技巧与窍门 SCSS 是一种流行的 CSS 预处理器&#xff0c;它可以增强 CSS 的功能并使代码更易于维护和扩展。在本文中&#xff0c;我们将了解如何开始使用 SCSS。 安装 SCSS 首先&#xff0c;您需要在计算机上安装 SCSS。最简单的方法是使用 npm&am…

每日博客Day8

每日博客Day 8 每日算法 206.翻转链表 个人第一次思路&#xff1a; 其实我个人的第一个思路是比较暴力的&#xff0c;我第一遍暴力遍历链表&#xff0c;把链表的所有数值全部都保存到数组里面&#xff0c;然后翻转这个数组&#xff0c;再重复的覆盖当前的这个链表。但是这样…

同旺科技 USB 转 RS-485 适配器

内附链接 1、USB 转 RS-485 适配器 基础版主要特性有&#xff1a;&#xff08;非隔离&#xff09; ● 支持USB 2.0/3.0接口&#xff0c;并兼容USB 1.1接口&#xff1b; ● 支持USB总线供电&#xff1b; ● 支持Windows系统驱动&#xff0c;包含WIN10 / WIN11系统32 / 64位…

【算法每日一练]-图论(保姆级教程篇7 最小生成树 ,并查集模板篇)#村村通 #最小生成树

目录 题目&#xff1a;村村通 并查集 题目&#xff1a;最小生成树 kruskal算法 prim算法 先引入问题&#xff1a; 要在n个城市之间铺设光缆&#xff0c;主要目标是要使这 n 个城市的任意两个之间都可以通信&#xff0c;但铺设光缆的费用很高&#xff0c;且各个城市之间铺…

线程池在Java中的应用实践

摘要&#xff1a;在实际业务场景中&#xff0c;线程池发挥着重要作用。本文将详细解答在高并发、任务执行时间短、并发不高、任务执行时间长以及并发高、业务执行时间长的业务场景下&#xff0c;如何使用线程池进行优化。 一、高并发、任务执行时间短的业务场景 在高并发、任务…

多平台小程序编译适配,是否会让更多App互联互通?

随着科技的飞速发展&#xff0c;我们正迅速进入一个以数字化为主导的时代。 在这个时代中&#xff0c;通信、小程序、快应用、云服务器等平台连接类软件如火如荼的发展&#xff0c;手机、手表、AR/VR眼镜等智能移动穿戴设备迅速的升级迭代&#xff0c;5G、芯片、算力等基础设施…

[Linux] Linux入门必备的基本指令(不全你打我)

一:ls指令 语法 &#xff1a; ls [选项] [目录或文件] 功能 &#xff1a;对于目录&#xff0c;该命令列出该目录下的所有子目录与文件。对于文件&#xff0c;将列出文件名以及其他信息。 ls不带选项就是显示当前目录下存在的子目录和文件 常用选项: (1). ls -l 功能: 列出…

工业产品3d交互展示数字云展厅更绿色环保

随着数字技术的飞速发展&#xff0c;3D全景汽车云展厅平台应运而生&#xff0c;为现代展览带来了前所未有的创新与变革。该平台以其独特的优点&#xff0c;为观众、艺术家和展商带来了全新的展览体验&#xff0c;开启了未来展览的新篇章。 首先&#xff0c;3D全景汽车云展厅平台…

JDBC参数之allowMultiQueries

其实allowMultiQueries参数是一个比较基础的参数&#xff0c;见名知意 支持多SQL执行的参数。 适用场景 其实这个参数是ORM框架中使用的&#xff0c;可能很多人误以为是MySQL的参数&#xff0c;其实并不是。 例如下面这个mybatis sql脚本&#xff0c;最终生成的SQL应该是多个…

有n件物品(n<=13),每件物品的的花费为c[i],每个背包的容量为w,求最少要几个背包才能装下所有物品

题目 #include<bits/stdc.h> using namespace std; const int maxn 15; int cnt[maxn]; bool ok[1 << maxn];//ok[i]表示以状态i装物品&#xff0c;一个背包能不能装下 int f[1 << maxn];//f[i]表示以状态i&#xff08;二进制数&#xff0c;0表示不装&…

【数据结构复习之路】树和二叉树(严蔚敏版)万字详解主打基础

专栏&#xff1a;数据结构复习之路 复习完上面四章【线性表】【栈和队列】【串】【数组和广义表】&#xff0c;我们接着复习 树和二叉树&#xff0c;这篇文章我写的非常详细且通俗易懂&#xff0c;看完保证会带给你不一样的收获。如果对你有帮助&#xff0c;看在我这么辛苦整理…