使用Apache POI 创建和读取excel表

目录

1. Apache POI 中文使用手册

1.1 Apache POI 项目介绍

1.2 处理组件

1.2.1 Excel 文件处理组件

1.2.2 Word 文件处理组件

1.2.3 PPT 文件处理组件

1.2.4 文档属性组件

1.2.5 Visio 文件处理组件

1.2.6 Microsoft Publisher 98(-2007)文件处理组件

1.2.7 OutLook 文件处理组件

1.2.8 OutLook 附件文件处理组件

1.3 Apache POI 下载

1.3.1 直接下载

1.3.2 Maven依赖下载

1.4 使用Apache POI

1.4.1 使用Apache POI 读写Excel 文件

2、测试:创建excel表

读取excel表格


1. Apache POI 中文使用手册

1.1 Apache POI 项目介绍

  • Apache POI项目的任务是创建和维护Java API,以基于Office Open XML标准(OOXML)和Microsoft的OLE 2复合文档格式(OLE2)处理各种文件格式。

  • 简而言之,您可以使用Java读写MS Excel文件。

  • 此外,您可以使用Java读写MS Word和MS PowerPoint文件。

  • Apache POI是您的Java Excel解决方案(适用于Excel 97-2008)

  • Apache POI项目是用于基于Microsoft的OLE 2复合文档格式开发文件格式的纯Java端口的主项目

  • Apache POI还是用于基于Office Open XML(ooxml)开发文件格式的纯Java端口的主项目

简言之, Apache POI 是Java 领域中可以操作World,Excel,PPT文件的类库,可以用于生成报表,数据处理等.

值得注意的是,Apache POI 从4.0.1版本开始,需要JDK 8 或更高版本支持。

1.2 处理组件

1.2.1 Excel 文件处理组件

POIFS

HSSF

XSSF

SXSSF

OIFS是POI中最古老,最稳定的部分。OLE 2复合文档格式到纯Java的移植。

读写*.xls文件

读写*.xlsx 文件

读写*.xlsx 大文件

1.2.2 Word 文件处理组件

HWPF

XWPF

处理*.doc文件

处理*.docx 文件

1.2.3 PPT 文件处理组件

HSLF

XSLF

处理*.ppt文件

处理*.pptx 文件

1.2.4 文档属性组件
  • HPSF是OLE 2属性集格式到纯Java的移植。

  • 属性集通常用于存储文档的属性(标题,作者,最后修改日期等),但是它们也可以用于特定于应用程序的目的。

  • HPSF支持读取和写入属性。

1.2.5 Visio 文件处理组件

HDGF

XDGF

处理*.vsd 文件

处理*.vsdx文件

1.2.6 Microsoft Publisher 98(-2007)文件处理组件
  • HPBF是我们将Microsoft Publisher 98(-2007)文件格式移植到纯Java的端口。

  • 目前,它仅支持低水平读取大约一半的文件部分,并支持简单的文本提取

1.2.7 OutLook 文件处理组件
  • SMF是Microsoft Outlook消息文件格式到纯Java的移植。目前,它仅包含MSG文件的某些文本内容以及一些附件。进一步的支持和文档进展缓慢

  • Microsoft最近在其OSP中添加了Outlook文件格式

1.2.8 OutLook 附件文件处理组件
  • HMEF是Microsoft TNEF(传输中性编码格式)文件格式到纯Java的移植。Outlook有时会使用TNEF对消息进行编码,通常会以winmail.dat的形式出现。HMEF当前仅支持较低级别的阅读,但我们希望添加文本和附件提取。

  • 处理winmail.dat 格式文件

1.3 Apache POI 下载

依赖引用关系图如下所示:

1.3.1 直接下载

点击下载Apache POI

  • 二进制版本发布仓库: Index of /dist/poi/release/binicon-default.png?t=N7T8https://archive.apache.org/dist/poi/release/bin/

  • 源码版本发布仓库: Index of /dist/poi/release/srcicon-default.png?t=N7T8https://archive.apache.org/dist/poi/release/src/

1.3.2 Maven依赖下载
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> 
<dependency> 
<groupId>org.apache.poi</groupId> 
<artifactId>poi</artifactId> 
<version>5.0.0</version> 
</dependency> 
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --> 
<dependency> 
<groupId>org.apache.poi</groupId> 
<artifactId>poi-ooxml</artifactId> 
<version>5.0.0</version> 
</dependency>
点击查看最新版

1.4 使用Apache POI

Apache POI 虽然支持很多种文档格式的读写,但是我们最常用的还是对Excel 文件的读写。

1.4.1 使用Apache POI 读写Excel 文件

正如前面所说,Apache POI 针对读写Excel 文件提供了三个组件:

HSSF

XSSF

SXSSF

HSSF是POI项目对Excel '97(-2007)文件格式的纯Java实现

XSSF是POI项目对Excel 2007 OOXML(.xlsx)文件格式的纯Java实现。

SXSSF是XSSF的API兼容流扩展,可用于必须生成非常大的电子表格且堆空间有限的情况

处理 *.xls 文件

处理 *.xlsx 文件

处理超大的 *xlsx 文件

  • 生成电子表格的另一种方法是通过Cocoon序列化器(但是您仍将间接使用HSSF)。使用Cocoon,您可以通过简单地应用样式表并指定序列化程序来序列化任何XML数据源(例如,可能是在SQL中输出的ESQL页面)。

  • 3.8-beta3 开始,POI提供了基于XSSF的低内存占用的SXSSF API。

  • SXSSF是XSSF的API兼容流扩展,可用于必须生成非常大的电子表格且堆空间有限的情况。SXSSF通过限制对滑动窗口内的行的访问来实现其低内存占用,而XSSF允许对文档中的所有行进行访问。不再存在于窗口中的较旧的行由于被写入磁盘而变得不可访问.

  • 在自动刷新模式下,可以指定访问窗口的大小,以在内存中保留一定数量的行。当达到该值时,创建额外的一行会导致索引最低的行从访问窗口中删除并写入磁盘。或者,可以将窗口大小设置为动态增长。可以根据需要通过显式调用flushRows(int keepRows)定期对其进行修剪。

  • 由于实现的流性质,与XSSF相比存在以下限制:

    • 在某个时间点只能访问有限数量的行。

    • 不支持 Sheet.clone()

    • 不支持公式评估

2、测试:创建excel表

/*
 * Copyright (c) 2020, 2024, fpl1116.cn All rights reserved.
 *
 */
package cn.fpl;

import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * <p>Project: ICan_ParentWork - WriteExcelTest</p>
 * <p>Powered by fpl1116 On 2024-01-24 16:30:12</p>
 * <p>描述:<p>
 *
 * @author penglei
 * @version 1.0
 * @since 1.8
 */
public class WriteExcelTest {
	public static void main(String[] args) throws IOException {
		// 创建workbook
		HSSFWorkbook workbook = new HSSFWorkbook();
		// 	创建sheet
		HSSFSheet sheet = workbook.createSheet("元神");
		// 	创建row
		HSSFRow row = sheet.createRow(0);
		// 	创建单元格并赋值
		row.createCell(0).setCellValue("姓名");
		row.createCell(1).setCellValue("年龄");
		for (int i = 1; i <=5 ; i++) {
			HSSFRow row1 = sheet.createRow(i);
			row1.createCell(0).setCellValue(i+"号角色");
			row1.createCell(1).setCellValue(18+i);
		}
		// 	输出excel
		workbook.write(new FileOutputStream("D:\\Users\\penglei\\Desktop\\元神.xls"));

	}

}

运行后则会在D:\\Users\\penglei\\Desktop\\元神.xls这个路径下产生一个元神.xls表格

读取excel表格

/*
 * Copyright (c) 2020, 2024, fpl1116.cn All rights reserved.
 *
 */
package cn.fpl;

/**
 * <p>Project: ICan_ParentWork - SS</p>
 * <p>Powered by fpl1116 On 2024-01-24 16:44:28</p>
 * <p>描述:<p>
 *
 * @author penglei
 * @version 1.0
 * @since 1.8
 */


import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import java.io.FileInputStream;
import java.io.IOException;

public class ReadExcelTest {
    public static void main(String[] args) throws IOException {
        //获得workboot
        HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream("D:\\Users\\penglei\\Desktop\\元神.xls"));
        //获得sheet
        HSSFSheet sheet = workbook.getSheet("元神");
        //获得row
        for (int i = 1; i < sheet.getLastRowNum(); i++) {
            HSSFRow row = sheet.getRow(i);
            //获得cell并取值
            String name = row.getCell(0).getStringCellValue();
            double age = row.getCell(1).getNumericCellValue();
            System.out.println(name+"-------------------"+age);
        }
    }
}

 运行后则会将表中的数据打印到控制台!!!

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

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

相关文章

HMI-Board以太网数据监视器(二)MQTT和LVGL

E ∫ d E ∫ k d q r 2 k L ∫ d q r 2 E \int dE \int \frac{kdq}{r^2} \frac{k}{L} \int \frac{dq}{r^2} E∫dE∫r2kdq​Lk​∫r2dq​ E Q 2 π ϵ L 2 E \frac{Q}{2\pi\epsilon L^2} E2πϵL2Q​ Γ ( n ) ( n − 1 ) ! ∀ n ∈ N \Gamma(n) (n-1)!\quad\forall n…

电脑自动开机播放PPT的解决方案

客户有个需求&#xff0c;要求与LED大屏幕连接的电脑定时自动播放PPT。为了安全电脑在不播放的时段&#xff0c;必须关机。 目录 1、使用“时控插座”并进行设置 2、戴尔电脑BIOS设置&#xff08;上电开机&#xff09; 3、设置Windows自动登录 4、任务计划设置 5、启动Au…

嵌入式linux学习之实践操作

​ 前沿 1. 安装交叉编译器 在开发板光盘 A-基础资料->5、开发工具->1、交叉编译器路径下找到 st-example-image-qt wayland-openstlinux-weston-stm32mp1-x86_64-toolchain-3.1-snapshot.sh。将它拷贝到 Ubuntu 虚拟机上。 拷贝到 Ubuntu 后&#xff0c;赋予 st-exam…

RabbitMQ死信交换机

目录 1.死信交换机介绍 2.TTL 3.延迟队列 4.消息堆积问题 5.惰性队列 6.代码实战 1.死信交换机介绍 当一个队列中信息满足下列情况之一时&#xff0c;可以成为死信&#xff08;dead letter&#xff09; &#xff08;1&#xff09;消费者使用basic.reject&#xff08;Reject…

Java基础进阶02-xml

目录 一、XML&#xff08;可拓展标记语言&#xff09; 1.学习网站&#xff1a; 2.作用 3.XML标签 4.XML语法 5.解析XML &#xff08;1&#xff09;常见解析思想DOM 6.常见的解析工具 7.DOM4j的使用 8.文档约束 &#xff08;1&#xff09;概述 &#xff08;2&#xf…

全桥变压器计算1

一共有两级&#xff0c;先DC升压&#xff0c;后H桥逆变为AC 因为两级都有损耗&#xff0c;所以一般用输入功率计算 电池升压到400V高压用的效率用表示&#xff0c;后面DC转AC的效率用表示&#xff0c;输入电压用Vin&#xff0c;输出功率Po2000W,输入功率为Pin 一般和96% 所…

Pandas ------ 向 Excel 文件中写入含有 multi-index 和 Multi-column 表头的数据

Pandas ------ 向 Excel 文件中写入含有 multi-index 和 Multi-column 表头的数据 引言正文 引言 之前在 《pandas向已经拥有数据的Excel文件中添加新数据》 一文中我们介绍了如何通过 pandas 向 Excel 文件中写入数据。那么对于含有多表头的数据&#xff0c;我们该如何将它们…

单调性的应用

1单调性 应用场景&#xff1a;常应用于双指针的进一步优化问题中含义&#xff1a;针对指针 i 1 > i i1>i i1>i一定有 j 1 > j j1>j j1>j或者 j 1 < j j1<j j1<j这样我们就可以利用该性质对算法进行进一步优化&#xff0c;避免一些不必要的遍历…

Linux——系统简介

1、从UNIX到LINUX 在目前主流的服务器端操作系统中&#xff0c;UNIX诞生于20世纪60年代末&#xff0c;Windows诞生于20世纪80年代中期&#xff0c;Linux诞生于20世纪90年代初&#xff0c;可以说UNIX是操作系统中的“老大哥”。 1.1、Linux简史 Linux内核最初是由李纳斯托瓦兹…

Caused by: com.mongodb.MongoTimeoutException: Timed out after 30000 ms

报错 Caused by: com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting to connect. Client view of cluster state is {typeUNKNOWN, servers[{addressmangodb-m.cc.com:3717, typeUNKNOWN, stateCONNECTING, exception{com.mongodb.MongoSocketReadE…

java数据结构与算法刷题-----LeetCode769. 最多能完成排序的块

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 解题思路 这道题可以理解为&#xff0c;只能保证块内有序的情况下&#xf…

力扣日记1.25-【回溯算法篇】39. 组合总和

力扣日记&#xff1a;【回溯算法篇】39. 组合总和 日期&#xff1a;2023.1.25 参考&#xff1a;代码随想录、力扣 39. 组合总和 题目描述 难度&#xff1a;中等 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和…

【域名解析】如何将域名指向对应服务器IP

目录 &#x1f337;一、域名解析基本概念 &#x1f33c;1. 定义 &#x1f33c;2. 域名解析类型 &#x1f337;二、域名解析服务器IP地址 &#x1f33c;1. 操作步骤 &#x1f33c;2. 验证 &#x1f337;一、域名解析基础知识 &#x1f33c;1. 基本概念 定义&#xff1a; …

微信小程序开发scroll-view在预览或真机调试仅显示第一个元素解决方案

现象如下&#xff1a; 在编译时显示正常&#xff1a; 在预览或真机调试时仅显示第一个元素&#xff1a; 解决方案&#xff1a;将app.json文件中renderer类型由skyline改为webview 更多微信小程序内容欢迎关注我&#xff01; 有帮助的话欢迎打赏&#xff01;

二次开发RuoYi-Vue操作记录

二次开发RuoYi-Vue操作记录 一、本地启动修改1、修改文件路径2、修改redis配置3、数据源配置4、导入sql 二、新增模块1、创建模块2、添加依赖 三、新增页面1、数据准备2、代码生成3、菜单管理&#xff08;1&#xff09;目录创建&#xff08;2&#xff09;菜单创建&#xff08;3…

ESP32开发板可以承受的最大电压

ESP32的最大工作电压为3.3V。但这并不意味着我们不能向 ESP32开发板施加大于 3.3V 的电压。ESP32 具有板载稳压器&#xff0c;使用 VIN 和 GND 引脚可承受最大 15V 的电压。 一旦电压输入到 ESP32 开发板VIN 引脚&#xff0c;该电压就会通过 ESP32 板载稳压器&#xff08;AMS11…

宏景eHR SmsAcceptGSTXServlet XXE漏洞复现

0x01 产品简介 宏景eHR人力资源管理软件是一款人力资源管理与数字化应用相融合,满足动态化、协同化、流程化、战略化需求的软件。 0x02 漏洞概述 宏景eHR SmsAcceptGSTXServlet接口处存在XML实体注入漏洞,未经身份认证的攻击者可以利用此漏洞读取系统内部敏感文件,获取敏…

群辉NAS的远程访问

群辉NAS是私有云存储&#xff0c;局域网访问很容易【详见&#xff1a;网上邻居访问设置、其它设备的访问设置】&#xff0c;远程访问相对复杂&#xff0c;涉及很多关键因素&#xff0c;现将过程记录如下&#xff1a; 目录 1、互联网接入 2、绑定MAC与IP地址 3、路由器开启5…

qml中访问控件内部的子项

如何访问Repeater类型内部的子项、Row等布局类型内部的子项以及ListView内部的子项等。。。 1、测试代码 import QtQuick 2.0 import QtQuick.Controls 2.12 import QtQuick.Window 2.12 import QtQuick.Layouts 1.3 import QtQml 2.12Window {id: windowobjectName: "m…

米贸搜|Facebook“精准营销”越来越难?或许是“受众定位”没彻底搞清!

一、为何要确定目标受众 对于每个广告主而言&#xff0c;面向最有可能成为其客户的用户营销非常重要&#xff0c;因此&#xff0c;确定目标受众&#xff0c;是Facebook广告投放中极其重要的一环。 二、什么是目标受众&#xff1f; 目标受众是您希望向其传达营销信息&#xf…