关于POI包处理excel方法详解 (一)

四、java基于poi源码操作excel之XSSFCell源码类 XSSFCell源码类 pom配置 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </depend 阅读详情
AI摘要

本文介绍了ApachePOI库及其子项目HSSF、XSSF、HWPF、XWPF和HSLF在处理不同版本Office文档中的作用,重点讲解了XSSFWorkbook、XSSFSheet、XSSFRow和XSSFCell的详细用法,展示了如何使用这些工具进行数据读写和格式操作。

目录

一、POI 组件介绍

二、XSSFWorkbook 详解

 三、XSSFSheet详解

 四、XSSFRow详解

五、XSSFCell 详解 


POI (Poor Obfuscation Implementation) 是一个 Java 库,用于处理 Microsoft Office文档,如Excel、Word和PowerPoint。它提供了一组类和方法,使开发人员能够读取、创建和修改这些文档,以及从中提取数据。

一、POI 组件介绍

POI 主要包括以下几个组件:

  • HSSF(Horrible Spreadsheet Format):HSSF 是 POI 的子项目,用于处理 Excel 97-2003 格式(.xls 文件)。它允许您读取、创建和修改 Excel 文档,包括工作簿、工作表、单元格、公式等。

  • XSSF(XML Spreadsheet Format):XSSF 是 POI 的子项目,用于处理 Excel 2007及更高版本的 XLSX 格式(基于XML的文件格式)。它支持读取和写入 XLSX 文件,并提供了对新 Excel 特性的支持。

  • HWPF(Horrible Word Processor Format):HWPF 是 POI 的子项目,用于处理 Word 97-2003 格式的文档(.doc 文件)。它允许您读取、创建和修改 Word 文档,包括文本、表格、图像等。

  • XWPF(XML Word Processor Format):XWPF 是 POI 的子项目,用于处理 Word 2007 及更高版本的 DOCX 格式(基于XML的文件格式)。它支持读取和写入 DOCX 文件,包括文本、样式、表格等。

  • HSLF(Horrible Slide Layout Format):HSLF 是 POI 的子项目,用于处理 PowerPoint 97-2003 格式的演示文稿(.ppt 文件)。它允许您读取、创建和修改 PowerPoint 文档,包括幻灯片、文本、图形等。

  • XSLF(XML Slide Layout Format):XSLF 是 POI 的子项目,用于处理 PowerPoint 2007 及更高版本的 PPTX 格式(基于XML的文件格式)。它支持读取和写入 PPTX 文件,包括幻灯片、文本、图形等。

使用 POI,您可以执行各种操作,如读取 Excel 文件中的数据、将数据写入 Excel 文件、操作 Word 文档的内容和格式、创建 PowerPoint 演示文稿等。它是一个强大的工具,特别适合需要自动化处理 Office 文档的 Java 应用程序。

使用 POI 的简单示例,用于读取 Excel 文件中的数据:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

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

public class ExcelReader {
    public static void main(String[] args) {
        try {
            FileInputStream file = new FileInputStream(new File("example.xlsx"));
            Workbook workbook = new XSSFWorkbook(file);
            Sheet sheet = workbook.getSheetAt(0);

            for (Row row : sheet) {
                for (Cell cell : row) {
                    System.out.print(cell.toString() + "\t");
                }
                System.out.println();
            }

            file.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

二、XSSFWorkbook 详解

XSSFWorkbook 是 Apache POI 库中用于操作 Excel 2007及更高版本(.xlsx 格式)文档的类。它是 org.apache.poi.xssf.usermodel.XSSFWorkbook 类的一个实现。XSSFWorkbook 提供了许多方法,用于创建、修改和操作 Excel 工作簿,包括工作表、单元格、样式等。以下是一些常用的 XSSFWorkbook 方法的详解:

构造函数:

  • XSSFWorkbook():创建一个新的空白工作簿。
  • XSSFWorkbook(InputStream is):从输入流加载现有的工作簿。
  • XSSFWorkbook(String path):从指定文件路径加载现有的工作簿。
  • XSSFWorkbook(OPCPackage pkg):使用 OPCPackage 对象创建工作簿,这通常用于高级用途。

创建工作表:

  • XSSFSheet createSheet(String sheetName):创建一个新的工作表,并指定工作表的名称。
  • XSSFSheet getSheetAt(int index):通过索引获取工作表。
  • XSSFSheet getSheet(String name):通过名称获取工作表。

工作表操作:

  • int getNumberOfSheets():获取工作簿中的工作表数量。
  • void removeSheetAt(int index):删除指定索引处的工作表。
  • XSSFSheet cloneSheet(int sheetIndex):克隆工作表。

保存工作簿:

  • void write(OutputStream out):将工作簿内容写入输出流,通常用于将工作簿保存到文件。
  • void write(File file):将工作簿内容写入指定的文件。
  • void close():关闭工作簿,释放资源。

样式和格式:

  • XSSFCellStyle createCellStyle():创建一个新的单元格样式。
  • XSSFFont createFont():创建一个新的字体对象。
  • short createDataFormat():创建一个新的数据格式。

日期处理:

  • void setCreationHelper(CreationHelper createHelper):设置工作簿的 CreationHelper,用于日期处理和其他数据类型的转换。

密码保护:

  • void lockStructure():锁定工作簿的结构,防止用户对工作表的结构进行更改。
  • void unlockStructure():解锁工作簿的结构,允许用户对工作表的结构进行更改。

其他:

  • int getActiveSheetIndex():获取当前活动工作表的索引。
  • void setActiveSheet(int sheetIndex):设置当前活动工作表的索引。
  • XSSFFormulaEvaluator getCreationHelper().createFormulaEvaluator():用于计算公式的创建和计算器。

 三、XSSFSheet详解

XSSFSheet 是 Apache POI 中用于表示 Excel 工作表的类,通常用于对 Excel 表格的数据进行读取和修改。XSSFSheet 类是 org.apache.poi.xssf.usermodel.XSSFSheet 的实现。以下是一些常用的 XSSFSheet 类的方法和属性:

属性和基本信息:

  • int getPhysicalNumberOfRows(): 获取工作表中的物理行数,即非空行的数量。

  • int getFirstRowNum(): 获取第一个行的索引,通常为0。

  • int getLastRowNum(): 获取最后一个行的索引。

  • String getSheetName(): 获取工作表的名称。

行操作:

  • XSSFRow createRow(int rowIndex): 创建一个新的行,指定行的索引。

  • XSSFRow getRow(int rowIndex): 获取工作表中指定行索引的行对象。

  • void removeRow(XSSFRow row): 从工作表中删除指定的行。

  • void shiftRows(int startRow, int endRow, int n):向下或向上移动工作表中的行。

列操作:

  • int getColumnWidth(int columnIndex): 获取指定列的宽度。

  • void setColumnWidth(int columnIndex, int width): 设置指定列的宽度。

工作表的属性:

  • boolean getDisplayFormulas(): 获取是否显示公式。

  • void setDisplayFormulas(boolean show):设置是否显示公式。

合并单元格:

  • void addMergedRegion(CellRangeAddress region): 合并单元格区域。

  • void addMergedRegionUnsafe(CellRangeAddress region): 合并单元格区域(不检查冲突)。

  • void removeMergedRegion(int index): 移除合并单元格区域。

保护工作表:

  • void protectSheet(String password): 保护工作表并设置密码。

  • void unprotectSheet(String password): 取消保护工作表,需要提供正确的密码。

页眉和页脚:

  • Header getHeader(): 获取工作表的页眉。

  • Footer getFooter(): 获取工作表的页脚。

注释:

  • XSSFRichTextString getSheetComment(): 获取工作表的注释。

  • void setSheetComment(XSSFRichTextString comment): 设置工作表的注释。

图表:

  • XSSFDrawing createDrawingPatriarch(): 创建绘图对象,用于插入图表和图形。

数据有效性:

  • XSSFDataValidationHelper getDataValidationHelper(): 获取数据有效性帮助器,用于创建数据有效性约束。

打印设置:

  • void setPrintArea(int startColumn, int endColumn, int startRow, int endRow): 设置要打印的区域。

其它方法:

  • boolean isSelected(): 检查工作表是否被选中。

  • void setSelected(boolean select): 设置工作表是否被选中。

 四、XSSFRow详解

XSSFRow 是 Apache POI 中用于表示 Excel 工作表中的行的类,通常用于对 Excel 表格的数据进行读取和修改。XSSFRow 类是 org.apache.poi.xssf.usermodel.XSSFRow 的实现。下面是一些常用的 XSSFRow 类的方法和属性:

属性和基本信息:

  • int getRowNum(): 获取行的索引,从0开始。

  • int getPhysicalNumberOfCells(): 获取该行的物理单元格数量,即非空单元格的数量。

单元格操作:

  • XSSFCell createCell(int columnIndex): 创建一个新的单元格,指定单元格在行中的列索引。

  • XSSFCell getCell(int columnIndex): 获取行中指定列索引的单元格。

  • void removeCell(XSSFCell cell): 从行中删除指定的单元格。

  • int getFirstCellNum(): 获取第一个单元格的列索引。

  • int getLastCellNum(): 获取最后一个单元格的列索引,包括空单元格。

设置行高和默认列宽:

  • void setHeight(short height): 设置行的高度(以20分之1个点为单位)。

  • void setZeroHeight(boolean zHeight): 设置行是否为零高度(隐藏行)。

其它方法:

  • void shiftCellsRight(int firstCellNum, int lastCellNum, int step): 将行中指定范围内的单元格向右移动。

  • void shiftCellsLeft(int firstCellNum, int lastCellNum, int step): 将行中指定范围内的单元格向左移动。

  • void shiftCellsRight(int firstCellNum, int lastCellNum): 将行中指定范围内的单元格向右移动一个位置。

  • void shiftCellsLeft(int firstCellNum, int lastCellNum): 将行中指定范围内的单元格向左移动一个位置。

五、XSSFCell 详解 

XSSFCell 是 Apache POI 中用于表示 Excel 工作表中单元格的类,通常用于读取和修改 Excel 表格中的数据。XSSFCell 类是 org.apache.poi.xssf.usermodel.XSSFCell 的实现。以下是一些常用的 XSSFCell 类的方法和属性:

获取单元格的内容:

  • String getStringCellValue(): 获取单元格中的文本值,无论单元格中的内容是文本、数字、日期或其他数据类型,都会以字符串形式返回。

  • double getNumericCellValue(): 获取单元格中的数值(仅适用于数值类型的单元格)。

  • boolean getBooleanCellValue(): 获取单元格中的布尔值(仅适用于布尔类型的单元格)。

  • String getCellFormula(): 获取单元格中的公式。

设置单元格的内容:

  • void setCellValue(double value): 设置单元格的值为数值。

  • void setCellValue(String value): 设置单元格的值为文本。

  • void setCellValue(boolean value): 设置单元格的值为布尔值。

  • void setCellFormula(String formula): 设置单元格的公式。

单元格样式:

  • XSSFCellStyle getCellStyle(): 获取单元格的样式对象,以便修改单元格的样式。

  • void setCellStyle(XSSFCellStyle style): 设置单元格的样式。

单元格类型和属性:

  • int getCellType(): 获取单元格的类型,返回常量值(CellType)。

  • boolean getBooleanCellValue(): 获取布尔类型的单元格值。

  • int getColumnIndex(): 获取单元格所在的列索引。

单元格注释:

  • XSSFRichTextString getRichStringCellValue(): 获取富文本字符串对象(支持格式化文本)。

  • XSSFRichTextString setCellValue(RichTextString value): 设置单元格的富文本字符串值。

单元格格式:

  • void setCellType(int cellType): 设置单元格的类型,可以是 CellType 常量之一。

日期格式:

  • void setCellStyle(CellStyle style): 设置单元格的日期格式。

公式计算:

  • void setCellType(CellType cellType): 设置单元格的类型,可以是 CellType 常量之一。

  • void setCellErrorValue(byte errorCode): 设置单元格的错误值。

其它方法:

  • boolean isPartOfArrayFormulaGroup(): 检查单元格是否属于数组公式组。

  • void removeCellComment(): 移除单元格的注释。

使用这些方法,您可以创建、操作和保存 Excel 工作簿,以满足您的需求。 

Apache POI 使用详细介绍 Java 使用Apache POI 生成文档 并导出 POI 是什么一级目录二级目录三级目录 POI 是什么 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能 一级目录 二级目录 三级目录 ... 阅读详情

相关推荐

XSSFSheet源码类解析-全网最全

XSSFSheet源码类解析-可以使用的几个方法,如何使用,代码中是什么意思,入参是什么,返回值是什么

weixin_51482243的博客 912

excel日期格式改不了_Apache POI使用详解(看完这篇基本上能应付工作中常用的excel)

本号主要用于分享企业中常用的技术,更加侧重于实用,欢迎关注,便于浏览其它更多实用的历史文章。一 :简介开发中经常会设计到excel的处理,如导出Excel,导入Excel到数据库中,操作Excel目前有两个框架,一个是apache 的poi, 另一个是 Java ExcelApache POI 简介是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式...

weixin_39899226的博客 746

Apache POI Excel处理必备JAR包集合

Apache POI是一个流行的Java库,它为读取和写入Microsoft Office格式文件提供了API。对于那些需要在Java应用程序中创建、修改或查看Excel、Word和PowerPoint文件的开发者来说,POI是一个不可或缺的工具。其主要用途包括但不限于自动化办公流程,如自动生成报告、数据导入导出以及实现与遗留系统的兼容性。Apache POI是一个开源的Java库,它支持Microsoft Office格式文件的操作,包括读取和写入多种格式。

weixin_42629522的博客 357

在Java中使用 Apache POI 处理Excel 文档详解

POI简介        Apache POI 是Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office(Excel、WORD、PowerPoint、Visio等)格式档案读和写的功能。POI为“Poor Obfuscation Implementation”的首字母缩写,意为“简洁的模糊实现”。官方主页: http://...

my_learning_road的博客 2949

Windows10开机无限蓝屏(SrtTrail.txt)

这个问题已经有很多的大佬发过解决办法了,这里仅仅作为自己日后方便查找所写文章 无法开机——自动修复失败,报SrtTrail.txt文件错误,且陷入无限蓝屏的循环 事故 故事的起因是这样的: 开开心心的组装电脑,花了几天时间来配置,然后发现USB3.0的接口太少,于是在某宝上搞到一张pcie转7口USB3.0的转接卡,往电脑上一插 插电,开机,电流轻松跑上去 然后,它和原来的磁盘阵列卡冲突,跳过阵列卡自检直接进入系统,boom,就导致了这场悲剧 解决方法 在蓝屏的界面找到:疑难解答->通过命令提示符 使

Holo__的博客 3万+

AlphaFold-multimer 复合物结构预测

是DeepMind开发的AlphaFold项目的一个扩展,旨在预测蛋白质多聚体的三维结构。蛋白质多聚体是由多个蛋白质亚单位相互组装而成的结构,如酶、膜蛋白复合物和病毒颗粒。理解多聚体的结构对于揭示蛋白质的功能和相互作用非常重要。

MurphyStar的博客 5646

org.apache.poi JAR包下载介绍:高效处理Excel文件的Java库

org.apache.poi JAR包下载介绍:高效处理Excel文件的Java库 【下载地址】org.apache.poiJAR包下载介绍 本项目提供`org.apache.poi` JAR包的下载资源,这是Apache POI项目的一部分,专为处理Microsoft Office格式文件而设计。该JAR包帮助开发者解...

gitblog_06771的博客 780

【异常】QClaw客户端安装失败(OpenClaw资源解压出错)问题排查与修复指南: 安装失败:OpenClaw 资源解压出错。 请重新安装或联系支持。

摘要:QClaw客户端安装失败报错"OpenClaw资源解压出错"的主要原因是资源包解压异常,常见于安装包损坏、系统权限不足、安全软件拦截、旧版本残留或系统环境问题。解决方案分三步:1)快速修复:重新下载安装包、管理员权限运行、关闭安全防护;2)深度修复:清理旧版本残留、修复系统组件;3)终极方案:收集日志联系官方支持。建议优先检查安装包完整性并使用纯英文安装路径,80%问题可通过快速修复方案解决。

奶爸的编程之路,也就一周冷个三天 382

POI各个jar包用途,及处理Excel需要jar包

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010689440/article/details/78019438 &nbsp;&nbsp; 最近项目需要导出Excel表功能,研究了好多,最后决定用阿帕奇的POI; &nbsp;&nbsp;&n...

付石头的博客 1万+

零基础入门生信转录组数据分析——导读

转录组数据分析(上游,下游,数据可视化)专栏的目录,可以直接通过点击各个分析点直接跳转到相关帖子,方便查找和观看

呆猪儿的博客 1万+

【AI智能体】Coze 数据库从使用到实战操作详解

Coze 数据库使用到实战详解

congge 5912

高效处理Excel文件:POI操作Excel所需Jar包推荐

高效处理Excel文件:POI操作Excel所需Jar包推荐 【下载地址】POI操作Excel所需Jar包 本仓库提供了操作Apache POI库以处理Excel文件所需的完整Java归档(JAR)文件集合。在开发过程中,使用POI库来读取、编写或修改Excel文档是非常常见的需求。然而,由于POI是一个模块化的库,正确...

gitblog_09769的博客 548

海康机器人visionmaster5.0全局通信西门子S7操作

德国西门子(SIEMENS)公司生产的可编程序控制器在我国的应用也相当广泛,在冶金、化工、印刷生产线等领域都有应用。西门子(SIEMENS)公司的PLC产品包括S7-200、S7-1200、S7-300、S7-400、S7-1500等。西门子S7系列PLC体积小、速度快、标准化,具有网络通信能力,功能更强,可靠性高。S7系列PLC产品可分为微型PLC(如S7-200),小规模性能要求的PLC(如S7-300)和中、高性能要求的PLC(如S7-400)等。

weixin_65316120的博客 422

【亲测免费】 高效处理Excel数据:Apache POI 4.1.0 Jar包集合推荐

高效处理Excel数据:Apache POI 4.1.0 Jar包集合推荐 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代企业应用中,处理Excel文件是一项常见且重要的任务。无论是数据导入、导出,还是报表生成,Excel文件的处理能力直接影响到应用的效率和用户体验。为了满足这一需求,Apache POI项目应运而生。Apache POI是一个强大的Java库,...

gitblog_09796的博客 1310

Debezium系列之:使用指定值替代指定字段的值

Debezium系列之:使用指定值替代指定字段的值

zhengzaifeidelushang的博客 306

LeetCode --- 937. Reorder Data in Log Files 解题报告

You are given an array oflogs. Each log is a space-delimited string of words, where the first word is theidentifier. There are two types of logs: Letter-logs: All words (except the identifier) consist of lowercase English letters. Digit-logs: All word..

杨鑫newlife的专栏 425

java 处理excel文档-POI包

JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI 。jxl 只能操作Excel 95, 97, 2000,也就是以.xls为后缀的excel。而poi可以操作Excel 95及以后的版本,即可操作后缀为 .xls 和 .xlsx两种格式的excel。 官网:http://poi.apache.org ,POI支持office的所有版本。 Apache POI,与excel...

野生码农 2472

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

一.POI各个jar包用途,及处理Excel需要jar包

最近项目需要导出Excel表功能,研究了好多,最后决定用阿帕奇的POI;     使用maven导入jar包时,发现POI有好多jar包,顿时不知应该导入那个,如果全部导入,使用应该没问题,但个人癖好是,用的导入,多余的不留,所以,又去官网查看一番,最后发现了下面这个东东: Component Map Apache POI分布包括对许多文档文件格式的支持。该支持在多个Jar文件中

WJY 2万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java处理Excel(POI包)

<br /><br />最近在咱们这个论坛里总能看见大家提出用java处理Excel的问题,有时还涉及到图形的问题,<br />大家看了这篇文章后,我想一定会解决不少人的问题!<br /><br /><br />看到网上很多文章都一直都是说POI的API不能处理图形,也就是不能往Excel里面加入图形。<br /><br />但事实上,POI3.0出来之后,这个问题已经解决!所以说,往Excel里面加入图形不必一定求助于JAVA EXCEL API了。<br /><br />最近在一位达人的启发下,终于解决

MaNGo's Park 433

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java处理 Excel(POI包)

最近在咱们这个论坛里总能看见大家提出用java处理Excel的问题,有时还涉及到图形的问题,大家看了这篇文章后,我想一定会解决不少人的问题!看到网上很多文章都一直都是说POI的API不能处理图形,也就是不能往Excel里面加入图形。但事实上,POI3.0出来之后,这个问题已经解决!所以说,往Excel里面加入图形不必一定求助于JAVA EXCEL API了。最近在一位达人的启发下,终于解决了这

1026

java web POI批量导出excel到zip包出错处理

好久不见,最近在做一个导出批量excel的功能,因为不希望通过先写出单个excel到本地,然后再压缩成zip后导出。 因此随手百度,找到倒流进ZipOutputStream,然后变成zip导出。 demo代码如下 @RequestMapping(value = "/poizip") public void poizip(HttpServletResponse respons...

何小杰的博客 1896

有关poi jar包中找不到XSSFWorkbook相关类的问题

处理excel文件一般使用poi,而使用maven引入poi的jar包如下: &amp;amp;lt;!-- https://mvnrepository.com/artifact/org.apache.poi/poi --&amp;amp;gt; &amp;amp;lt;dependency&amp;amp;gt; &amp;amp;lt;groupId&amp;amp;gt;org.apache.poi&amp;amp;lt;/groupI

空夜's Blog 4万+

上下标 java_java包POI处理excel上下标的代码分享

原理是逐字检查发现,即使用sup,sub的网页标签替换。含有2003版本和2007版本package com.uet.common.utils;import org.apache.commons.lang3.StringUtils;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.H...

weixin_39715538的博客 547

poi读取excel2007大文件

jar包:poi3.7、xbean、xercesImpl package com.saxfs; import java.io.InputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.poi.openxml4j.opc.

dcsno1的专栏 2281
上一篇: 详解synchronized和volatile有什么区别
下一篇: 详解Java多线程并行读取多个文件(一)
境里婆娑
境里婆娑 新星创作者: Java技术领域 新星创作者: Java技术领域 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄10年 1万+粉丝 300原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

境里婆娑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值