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

目录

一、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 工作簿,以满足您的需求。 

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

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

相关文章

MySQL数据库入门到大牛_02_MySQL环境搭建、演示使用、图形化管理工具、一二章练习

文章目录 1. MySQL的卸载步骤1:停止MySQL服务步骤2:软件的卸载步骤3:残余文件的清理步骤4:清理注册表(选做)步骤5:删除环境变量配置 2. MySQL的下载、安装、配置2.1 MySQL的4大版本2.2 软件的下…

Linux 系统管理工具 supervisor 详解

目录 1. Linux 系统管理工具 supervisor 详解1.1. supervisor 进程管理服务组成1.2. 进程管理服务部署1.3. 进程管理服务配置信息1.4. 进程管理服务命令使用1.5. 进程管理服务启动应用1.6. 进程管理服务进程1.6.1. 进程管理应用实战-Nginx 1. Linux 系统管理工具 supervisor 详…

leetcode做题笔记213. 打家劫舍 II

你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一…

Python基础(第五期): python数据容器(序列) 列表 集合 元素 字符串 字典 序列遍历操作

python基础专栏 python基础(第五期) 文章目录 python基础(第五期)数据容器一、列表1、列表的定义2、列表的下标索引 3、列表的(添加)方法3.1 列表的查询方法3.2 修改特定下标索引的值3.3 列表指定位置插入元素3.3 列表指定元素的追…

【Linux】-文件操作(重定向、缓冲区以及Linux下一切皆文件的详解)

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

电脑监控软件丨2023全网最详细解析

电脑监控软件是一个比较敏感的话题,因为很多员工会觉得电脑监控侵犯了自己的隐私,电脑上企业会觉得安装软件只不过是为了保护自己的核心利益。 对于此,我们要辩证的看待。 今天我们从企业的角度出发,谈谈电脑监控软件的话题。 必…

【python VS vba】(5) 在python中使用xlwt操作Excel(待完善ing)

目录 1 什么是xlwt 2 导入xlwt 3 相关语法 3.1 创建新的workbook 3.2 创建新的sheet 3.3 保存workbook 4 python里表格的形式 4.1 矩阵 4.2 EXCEL的数据形式 完全等于矩阵的数字结构 4.3 python里矩阵 5 具体代码 5.1 代码 5.2 结果 5.3 要注意的问题 5.3.1 不能…

深入理解JVM虚拟机第十八篇:JVM种局部变量表结构的认识

大神链接:作者有幸结识技术大神孙哥为好友,获益匪浅。现在把孙哥视频分享给大家。 孙哥链接:孙哥个人主页 作者简介:一个颜值99分,只比孙哥差一点的程序员 本专栏简介:话不多说,让我们一起干翻JVM 本文章简介:话不多说,让我们讲清楚虚拟机栈存储结构和运行原理 文章目…

NOIP2023模拟12联测33 D. 滈葕

NOIP2023模拟12联测33 D. 滈葕 文章目录 NOIP2023模拟12联测33 D. 滈葕题目大意思路code 题目大意 思路 放一段题解的材料 ABO 血型系统是血型系统的一种,把血液分为 A,B,AB,O 四种血型。血液由红细胞和血清等组成,红细胞表面 有凝集原,血清…

ES6~ES13新特性(二)

文章目录 一、ES71.Array Includes2.指数exponentiation运算符 二、ES81.Object values2.Object entries3.String Padding4.Trailing Commas5.Object Descriptors 三、ES9四、ES101.flat flatMap2.Object fromEntries3.trimStart、trimEnd4.其他知识点 五、ES111.BigInt2.Nulli…

提升ChatGPT答案质量和准确性的方法Prompt engineering实用的prompt灵感和技巧

文章目录 1. 实用的prompt灵感和技巧小技巧常用prompt保存到输入法中普通promptprompt通用公式保存到输入法快捷指令中尝试用英语去写prompt沉浸式翻译软件3. 补充1. 实用的prompt灵感和技巧 解释***,并且给出暗喻/隐喻/类比(解释术语、专业名称,用一个词或短语指出常见的一…

odoo后台启动过程分析之一

odoo后台启动过程分析之一 1、odoo-bin #!/usr/bin/env python3# set server timezone in UTC before time module imported __import__(os).environ[TZ] UTC import odooif __name__ "__main__":odoo.cli.main()这个odoo-bin是一切的起点。 代码很简单 第一步&…

LangChain+LLM实战---Midjourney(v5.1) Prompt深度剖析

原文:Anatomy of Midjourney Promps: In-Depth Study for effective Prompting Strategies — V5.1 examples 作者:Michael King 你是否曾经发现自己盯着Midjourney的空白画布,手指悬停在键盘上,让我问自己:“我应该…

kafka问题汇总

报错1: 解决方式 1、停止docker服务   输入如下命令停止docker服务 systemctl stop docker 或者service docker stop1   停止成功的话,再输入docker ps 就会提示出下边的话: Cannot connect to the Docker daemon. Is the docker daem…

方案分享:F5机器人防御助企业应对复杂攻击

企业是Bot攻击者的目标,网络犯罪分子会不断调整他们的攻击,来攻破愈发成熟的Bot防护,这使企业安全团队时刻处于紧张状态。如果不能有效地管理Bot,应用性能、客户体验和业务都会被影响,但在尝试阻止这些攻击时&#xff…

【PTE-day02 sqlmap操作】

1、sqlmap简介 🍇sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL进行SQL注入。目前支持的数据库有MySql、Oracle、Access、PostageSQL、SQL Server、IBM DB2、SQLite、Firebird、Sybase和SAP MaxDB等. Sqlmap采用了以下5种独特的SQL注入技术 (1)…

k8s service

文章目录 Service 基础概念Service 类型:Service 的工作流程:东西流量,南北流量NodePortLoadBalancer Service 基础概念 在 Kubernetes(K8s)中,Service 是一个抽象的概念,表示一个应用程序的逻…

计算机毕设 基于大数据的服务器数据分析与可视化系统 -python 可视化 大数据

文章目录 0 前言1 课题背景2 实现效果3 数据收集分析过程**总体框架图****kafka 创建日志主题****flume 收集日志写到 kafka****python 读取 kafka 实时处理****数据分析可视化** 4 Flask框架5 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升&a…

【docker windows安装】

参考 博客1、博客2、博客3.

fio数据整理之二

fio数据简单抓取 上文我们完成了一些fio output数据的简单抓取,本文将针对抓取的数据做进一步的处理,输出到表格之中,方便我们查看,统计结果。 本文先使用最简单的方法创建csv档案 我们现有个基本认知,在csv档案中&am…