当前位置: 首页 > news >正文

Apache POI用法

一、Apache POI是什么

Apache POI是用Java编写的免费开源的跨平台的Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能,其中使用最多的就是使用POI操作Excel文件。

二、POI结构

HSSF - 提供读写Microsoft Excel XLS格式档案的功能
XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能
HWPF - 提供读写Microsoft Word DOC格式档案的功能
HSLF - 提供读写Microsoft PowerPoint格式档案的功能
HDGF - 提供读Microsoft Visio格式档案的功能
HPBF - 提供读Microsoft Publisher格式档案的功能
HSMF - 提供读Microsoft Outlook格式档案的功能

三、POI操作Excel

3.1从Excel读取数据
//通过遍历工作表获得行,遍历行获得单元格,最终获取单元格中的值。
//创建工作簿
XSSFWorkbook workbook = new XSSFWorkbook("D:\\hello.xlsx");
//获取工作表,既可以根据工作表的顺序获取,也可以根据工作表的名称获取
XSSFSheet sheet = workbook.getSheetAt(0);
//遍历工作表获得行对象
for (Row row : sheet) {//遍历行对象获取单元格对象for (Cell cell : row) {//获得单元格中的值String value = cell.getStringCellValue();System.out.println(value);}
}
workbook.close();

POI操作Excel表格封装了几个核心对象:

XSSFWorkbook:工作簿
XSSFSheet:工作表
Row:行
Cell:单元格
3.2向Excel文件写入数据

使用POI可以在内存中创建一个Excel文件并将数据写入到这个文件,最后通过输出流将内存中的Excel文件下载到磁盘

import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFCell;import java.io.FileOutputStream;
import java.io.IOException;public class ExcelWriter {public static void main(String[] args) {// 创建一个新的XSSFWorkbook对象,代表整个Excel工作簿XSSFWorkbook workbook = new XSSFWorkbook();try {// 创建一个新的工作表XSSFSheet sheet = workbook.createSheet("Sheet1");// 创建第一行XSSFRow row = sheet.createRow(0);// 创建第一行的第一个单元格,并设置值XSSFCell cell = row.createCell(0);cell.setCellValue("Hello, World!");// 创建第二行XSSFRow row2 = sheet.createRow(1);// 创建第二行的第一个单元格,并设置值XSSFCell cell2 = row2.createCell(0);cell2.setCellValue("这是第二行");// 将工作簿写入到文件中try (FileOutputStream outputStream = new FileOutputStream("output.xlsx")) {workbook.write(outputStream);}System.out.println("Excel文件已成功创建并写入数据");} catch (IOException e) {e.printStackTrace();} finally {try {// 关闭workbookif (workbook != null) {workbook.close();}} catch (IOException e) {e.printStackTrace();}}}
}

四、POI操作Word

4.1读取 Word 文件

Apache POI 也可以用于读取 Word 文件的内容。

import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;import java.io.FileInputStream;
import java.io.IOException;public class WordReader {public static void main(String[] args) {try (FileInputStream fis = new FileInputStream("example.docx");XWPFDocument document = new XWPFDocument(fis)) {XWPFWordExtractor extractor = new XWPFWordExtractor(document);String text = extractor.getText();System.out.println(text);} catch (IOException e) {e.printStackTrace();}}
}
4.2写入 Word 文件

写入 Word 文件也可以通过 Apache POI 来实现。

import org.apache.poi.xwpf.usermodel.*;import java.io.FileOutputStream;
import java.io.IOException;public class WordWriter {public static void main(String[] args) {// 创建文档XWPFDocument document = new XWPFDocument();// 创建段落XWPFParagraph paragraph = document.createParagraph();XWPFRun run = paragraph.createRun();run.setText("这是一个示例文档。");// 写入文件try (FileOutputStream fos = new FileOutputStream("output.docx")) {document.write(fos);} catch (IOException e) {e.printStackTrace();}}
}

五、深入学习

如果想要深入学习 Apache POI,可以参考官方文档:https://poi.apache.org/

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 云原生应用——软件的未来
  • JVM-内存区域
  • 打造古风炫酷个人网页:用HTML和CSS3传递笔墨韵味
  • 基于Ubuntu+PostgreSQL+Zip搭建SonarQube环境
  • linux的文本编辑器vim常用操作命令介绍
  • 西门子S7协议(PROFINET端口)转罗克韦尔AB的Ethernet/IP网络通讯
  • ubuntu16.04下qt5.7.1添加对openssl的支持
  • C# 手动写入日志,过大写入新文件
  • 走进低代码表单开发(三):高效业务功能构建
  • 构建高效入学审核系统:Spring Boot解决方案
  • 【经验技巧】瞬态信号仿真中的码型选择问题
  • Windows桌面整理软件哪个最好?值得一试的Top10桌面管理软件汇总(全新)
  • 斯坦福研究人员探讨大型语言模型在社交网络生成中的应用及其在政治同质性上的偏见
  • Gin-封装自动路由
  • InstantMesh模型构建指南
  • 07.Android之多媒体问题
  • JavaScript-Array类型
  • Kibana配置logstash,报表一体化
  • Objective-C 中关联引用的概念
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 编写符合Python风格的对象
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 读懂package.json -- 依赖管理
  • 关于使用markdown的方法(引自CSDN教程)
  • 简单基于spring的redis配置(单机和集群模式)
  • 聊聊flink的BlobWriter
  • 免费小说阅读小程序
  • 项目实战-Api的解决方案
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • FaaS 的简单实践
  • MyCAT水平分库
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • 如何在招聘中考核.NET架构师
  • ​520就是要宠粉,你的心头书我买单
  • #Datawhale AI夏令营第4期#AIGC方向 文生图 Task2
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • $.ajax中的eval及dataType
  • (1)(1.11) SiK Radio v2(一)
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (1)svelte 教程:hello world
  • (2)空速传感器
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (第27天)Oracle 数据泵转换分区表
  • (二)斐波那契Fabonacci函数
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (七)Java对象在Hibernate持久化层的状态
  • (一)基于IDEA的JAVA基础10
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NET应用UI框架DevExpress XAF v24.1 - 可用性进一步增强
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • @Responsebody与@RequestBody
  • [100天算法】-二叉树剪枝(day 48)