本文介绍: 使用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

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);
        }
    }
}

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

原文地址:https://blog.csdn.net/qq_62124267/article/details/135853750

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_63129.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注