POI in Action
POI 组件依赖
按需引入对应依赖 (给出官方的指引)
| 组件 | 作用 | Maven依赖 |
|---|---|---|
| POIFS | OLE2 Filesystem | poi |
| HPSF | OLE2 Property Sets | poi |
| HSSF | Excel XLS | poi |
| HSLF | PowerPoint PPT | poi-scratchpad |
| HWPF | Word DOC | poi-scratchpad |
| HDGF | Visio VSD | poi-scratchpad |
| HPBF | Publisher PUB | poi-scratchpad |
| HSMF | Outlook MSG | poi-scratchpad |
| DDF | Escher common drawings | poi |
| HWMF | WMF drawings | poi-scratchpad |
| OpenXML4J | OOXML | poi-ooxml plus either poi-ooxml-schemas or ooxml-schemas and ooxml-security |
| XSSF | Excel XLSX | poi-ooxml |
| XSLF | PowerPoint PPTX | poi-ooxml |
| XWPF | Word DOCX | poi-ooxml |
| XDGF | Visio VSDX | poi-ooxml |
| Common SL | PowerPoint PPT 和 PPTX 共用组件 | poi-scratchpad and poi-ooxml |
| Common SS | Excel XLS 和 XLSX 共用组件 | poi-ooxml |
| XSSF | Excel XLSX | poi-ooxml |
| XSLF | PowerPoint PPTX | poi-ooxml |
| XWPF | Word DOCX | poi-ooxml |
| XDGF | Visio VSDX | poi-ooxml |
| Common SL | PowerPoint PPT 和 PPTX 共用组件 | poi-scratchpad and poi-ooxml |
| Common SS | Excel XLS 和 XLSX 共用组件 | poi-ooxml |
什么是 OLE2 和 OOXML
OLE2 和 OOXML 本质上都是一种文件格式规范或标准,平时看到的 excel 中,有字体、公式、颜色、图片等等,看起来非常复杂,但是在文件结构上都遵循着固定的格式。
OLE2 文件一般包括 xls、doc、ppt 等,是二进制格式的文件。 相关内容可以参考: 复合文档Ole对象二进制储存格式 。
OOXML文件一般包括 xlsx、docx、pptx 等。该类文件以指定格式的 xml 为基础并以 zip 格式压缩,这里我利用解压工具解压本地的一个 xlsx 文件,可以看到以下文件结构,在本文例子中,我们会重点关注 sharedStrings.xml 和 sheet1.xml 的内容,因为使用 SAX API 时必须用到:

| 包名 | 描述 |
|---|---|
| org.apache.poi.ss | Excel API,底层解析方式类似 DOM,效率较低,内存占用较大 |
| org.apache.poi.hssf | Excel XLS API,采用 SAX API 方式读写 |
| org.apache.poi.xssf | Excel XLSX API,采用 SAX API 方式读写 |
POI SAX 方式的 API 非常繁琐,使用时须熟练掌握 OLE2 或 OOXML 的规范
相关文章:
POI in Action
POI 组件依赖 按需引入对应依赖 (给出官方的指引) 组件作用Maven依赖POIFSOLE2 FilesystempoiHPSFOLE2 Property SetspoiHSSFExcel XLSpoiHSLFPowerPoint PPTpoi-scratchpadHWPFWord DOCpoi-scratchpadHDGFVisio VSDpoi-scratchpadHPBFPublisher PUBpoi-scratchpadHSMFOutloo…...
苹果Vision Pro将引爆人机交互的重大变革
2023年6月6日,苹果发布了大家期待已久的Vision Pro,Vision Pro是一款专业级MR设备,融合了虚拟现实(VR)和增强现实(AR)技术,可以让用户完全沉浸在高分辨率显示内容中。允许用户以一种全新的方式在其周围的空间中查看APP。用户可以用…...
MMDetection学习记录(二)之配置文件
文件结构 config文件 在 config_base_ 文件夹下有 4 个基本组件类型,分别是:数据集(dataset),模型(model),训练策略(schedule)和运行时的默认设置(default runtime)。 命名风格 {model}_[model setting]_{backbone}_{neck}_[no…...
Python数据分析:NumPy、Pandas和Matplotlib的使用和实践
在现代数据分析领域中,Python已成为最受欢迎的编程语言之一。Python通过庞大的社区和出色的库支持,成为了数据科学家和分析师的首选语言。在Python的库中,NumPy、Pandas和Matplotlib是三个最为重要的库,它们分别用于处理数值数组、…...
实习生面试问题及回答记录
文章目录 文章简介技术类1、DFS和BFS算法的区别是什么?2、解释一下什么是快速排序?3、 如果让你写一个排序算法?你会怎么写?(大概说出代码的思路)4、解释一下二分查找的具体逻辑?5、在代码的数据…...
设计模式(十):结构型之外观模式
设计模式系列文章 设计模式(一):创建型之单例模式 设计模式(二、三):创建型之工厂方法和抽象工厂模式 设计模式(四):创建型之原型模式 设计模式(五):创建型之建造者模式 设计模式(六):结构型之代理模式 设计模式…...
买法拍房需要注意什么
法拍房,由于其价格亲民、房屋信息透明度高、竞拍过程公平公正而受到越来越多的人开始关注。但是其中又有着许多的风险及相关的注意事项。那么,如何做到成功“捡漏”,买法拍房需要注意什么呢? 买法拍房需要注意什么 1、隐藏的各种收费 税费&a…...
linux命令输出结果但不显示在屏幕上的通用办法
linux命令输出结果但不显示在屏幕上的通用办法 这个针对于我这种小白马大哈很简单的一个命令,记给自己备用 举个例子:unzip命令不输出结果 unzip xx.zip > /dev/null 2>&1 unzip xx.zip > /dev/null 前半部分是将标准输出重定向到空设备&a…...
【Linux系统进阶详解】Linux字符权限rwx-权限组合原理,对应类型ugo,user,group,other,+-=详解及权限管理实战
在Linux系统中,每个文件和目录都有三种权限:读权限(r)、写权限(w)和执行权限(x)。这些权限可以被分配给三个不同的用户组:用户(user)、组(group)和其他人(other)。此外,权限可以使用“+”、“-”和“=”符号进行修改。 权限组合原理 Linux系统中的权限由字母…...
凡人修C传——专栏从凡人到成仙系列目录
这里先感谢博主THUNDER王给我提出来的一个创作建议,让我有了创作的灵感来创建这一篇博客以及凡人修C传这一个系列的文章。 本文最主要的目的就是给大家一个凡人修C传的一个目录,让大家更加容易学到自己想学的地方。 📝【个人主页】࿱…...
隐藏python代码,售卖并保护源代码
我写了一个基于pytorch框架的特殊卷积,他的使用方式和其他的卷积一样,但是我想把它卖出去,希望隐藏特殊卷积的代码 1、如果您希望隐藏特殊卷积的代码并将其作为一个可售卖的产品,可以考虑以下几种方法来保护您的代码:…...
Material—— VAT(Houdini To UE)
目录 一,介绍 二,柔体 二,刚体 一,介绍 VAT是将动画数据存储在纹理中,通过GPU运算来实现动画的技术;VAT纹理包含每个顶点在不同帧的位置信息,而每个像素代表一个顶点在某个时间点的位置&…...
视频后期剪辑
文章目录 后期剪辑软件三方插件提供动画制作软件 后期剪辑软件 视频剪辑后期处理涉及到多个软件和插件,下面是对其中几个主要软件及其相关插件的扩展介绍,以及为它们提供插件的一些知名第三方公司。 Adobe After Effects: Adobe After Effec…...
Python3+Selenium2完整的自动化测试实现之旅(七):完整的轻量级自动化框架实现
一、前言 前面系列Python3Selenium2自动化系列博文,陆陆续续总结了自动化环境最基础环境的搭建、IE和Chrome浏览器驱动配置、selenium下的webdriver模块提供的元素定位和操作鼠标、键盘、警示框、浏览器cookie、多窗口切换等场景的方法、web自动化测试框架、python面…...
泰山信息科技5周年:无尽的感恩,非常非常的惋惜
去年的时候,庆贺4周年,公司员工一起去某个地方玩(确实没吃到什么东西)。这是当时的情形: 因为各种原因,今年3月无锡研发基地解散。作为技术总监,我是非常非常的惋惜。因为我真的想把泰山OFFICE做…...
LabVIEW编程开发PCB测试仪
LabVIEW编程开发PCB测试仪 使用PXI和LabVIEW的PCB钉床测试仪 用于PCB(印刷电路板)的钉床测试仪,使用PXI和LabVIEW。一家电子制造公司需要测试仪来测试他们的PCB产品。钉床测试仪是一种具有连接到电路板上各个测试点的引脚的测试。电路板需要…...
React使用Electron开发桌面端
React是一个流行的JavaScript库,用于构建Web应用程序。结合Electron框架,可以轻松地将React应用程序打包为桌面应用程序。以下是使用React和Electron开发桌面应用程序的步骤: 1. 安装Electron 首先,你需要安装Electron。在终端中…...
springboot+vue餐厅点餐系统在线点餐系统(含源码+数据库)
1.系统分析 系统用例图如下所示。 从用户、餐厅等方面进行需求分析如下。 1.用户需求:系统应该提供简单易用的用户界面,用户可以浏览餐厅菜单,选择菜品,下订单。此外,应该允许用户管理个人信息和查看历史订单。 2.餐…...
Vue.js 中的 TypeScript 支持是什么?如何使用 TypeScript?
Vue.js 中的 TypeScript 支持 Vue.js 是一款流行的前端框架,它提供了一种简单、灵活的方式来构建用户界面。随着 TypeScript 的普及,Vue.js 也开始支持 TypeScript,使得开发者可以使用类型检查等 TypeScript 特性来提高代码质量和可维护性。…...
测试者必知—如何做Web测试?常见测试点总结
目录 前言: 一、Web应用程序 二、功能测试 三、易用性测试(界面测试) 四、兼容性测试 五、安全性测试 六、性能测试 前言: Web测试是指对基于Web技术的应用程序进行测试,以测试其功能、性能、安全和稳定性等方面的表…...
Java 核心四大基石:从 Object 源码到包装类陷阱的全维度复盘
让我们从两个常见的实际场景出发,看看开发者会遇到什么困惑。 场景一:如何在程序中获取“当前时间”? 你一定见过这样的界面: 直播画面右上角显示:2026 年 01 月 08 日 15:00:00(实时更新) 这个…...
PyTorch 3.0静态图分布式训练源码分析窗口即将关闭:官方已标记torch.distributed._spmd模块为“实验性冻结”,2024 Q3后将移除调试钩子入口
第一章:PyTorch 3.0静态图分布式训练的演进背景与冻结决策动因PyTorch 3.0正式宣布冻结静态图(TorchScript)在分布式训练路径中的演进支持,这一决策并非技术倒退,而是基于多年大规模生产实践与生态协同的理性收敛。随着…...
ollama-QwQ-32B量化部署:在4GB内存设备运行OpenClaw的配置
ollama-QwQ-32B量化部署:在4GB内存设备运行OpenClaw的配置 1. 为什么要在低配设备上折腾大模型? 去年冬天,我在树莓派上第一次尝试部署OpenClaw时,被现实狠狠教育了一顿——32GB内存的笔记本跑得飞起,换到4GB的树莓派…...
Python实战:用Statsmodels搞定简单线性回归(附NO浓度预测案例)
Python实战:用Statsmodels搞定简单线性回归(附NO浓度预测案例) 在数据分析领域,线性回归是最基础却最实用的统计方法之一。无论你是市场分析师预测销售额,还是环境科学家研究污染物分布,掌握线性回归都能让…...
LeetCode 53. 最大子数组和 超详细题解(贪心+分治+动规)
LeetCode 53. 最大子数组和 超详细题解(贪心分治动规) 🏷️ 标签:动态规划、贪心算法、分治法、数组、经典面试题 📊 难度:简单 | 📝 题目编号:53 | 🗂️ 题型࿱…...
5G赋能下的车联网协同感知:自动驾驶感知盲区消除新思路
1. 为什么自动驾驶需要"组队开黑"模式? 想象一下你开车经过一个十字路口,左侧突然冲出一辆外卖电动车——这是典型的A柱盲区问题。传统自动驾驶就像闭着眼睛打游戏,全靠本车传感器"听声辨位"。而5G车联网协同感知&#x…...
Linux 配置文件 bashrc
本文详细介绍了Linux系统中配置文件bashrc的作用、使用方法和配置技巧。bashrc文件是bash shell在用户登录时自动执行的脚本,用于定义用户的环境变量和别名等个性化设置。文章首先解释了bashrc文件的重要性,并介绍了如何编辑和修改该文件。接着ÿ…...
leetcode 1504. Count Submatrices With All Ones 统计全 1 子矩形
Problem: 1504. Count Submatrices With All Ones 统计全 1 子矩形 计算矩阵的前缀和,然后遍历所有的子矩阵,看是否都是1也就是面积等于长乘以宽 都是1的矩阵,可以直接计算得到结果 Code class Solution { public:int numSubmat(vector<…...
大厂裁员潮下,软件人的“抗风险”能力清单
在当今科技行业,大厂裁员潮已成为不可忽视的现实。2025年至2026年间,多家头部企业为优化成本,纷纷缩减规模,导致软件测试从业者面临前所未有的职业挑战。裁员不仅源于经济压力,更反映了行业转型——基础手工测试正被自…...
用74ls10和74ls20与非门搭建四人表决器:从真值表到电路图的完整设计流程
用74LS10和74LS20与非门搭建四人表决器:从真值表到电路图的完整设计流程 在数字电路设计中,表决器是一个经典的教学案例,它不仅能帮助理解组合逻辑电路的基本原理,还能锻炼从理论到实践的完整设计能力。本文将手把手带你用74LS10…...
