Apache POI

ops/2024/10/24 1:36:15/

 Apache POI 是一个强大的 Java 库,用于读写 Microsoft Office 文件格式,包括 Excel、Word 和 PowerPoint 等。它允许 Java 应用程序直接创建、读取和修改这些文档。

1.1 依赖管理

<dependencies><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.3</version> <!-- 检查最新版本 --></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.3</version></dependency><dependency><groupId>org.apache.xmlbeans</groupId><artifactId>xmlbeans</artifactId><version>5.1.1</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>4.1.2</version></dependency>
</dependencies>
  1. poi:这个依赖是处理旧版 Excel 文件(.xls)的核心库。如果你只处理 .xls 文件,且不需要处理 .xlsx 文件,则只需导入这个依赖。

  2. poi-ooxml:这个依赖是处理新版 Excel 文件(.xlsx)的核心库。如果你只处理 .xlsx 文件,则必须导入这个依赖。如果你同时处理 .xls 和 .xlsx 文件,则需要导入这两个依赖。

  3. poi-ooxml-schemas:这个依赖是处理一些特定的 Excel 文件功能所需的。例如,处理复杂的 Excel 文档结构、图表等。如果你只需要基本的读写功能,通常可以不导入这个依赖。

  4. xmlbeans:这个库用于处理 XML 数据,POI 使用它来解析和生成 .xlsx 文件。如果你处理 .xlsx 文件,通常需要导入这个依赖。

2. 操作 Excel 文件

2.1 创建 Excel 文件

下面是创建一个简单 Excel 文件并写入数据的示例:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileOutputStream;
import java.io.IOException;public class CreateExcel {public static void main(String[] args) {Workbook workbook = new XSSFWorkbook(); // 创建一个工作簿Sheet sheet = workbook.createSheet("示例表格"); // 创建一个工作表Row row = sheet.createRow(0); // 创建第一行Cell cell = row.createCell(0); // 创建第一个单元格cell.setCellValue("你好,Apache POI!"); // 设置单元格值// 写入到文件try (FileOutputStream fileOut = new FileOutputStream("workbook.xlsx")) {workbook.write(fileOut);} catch (IOException e) {e.printStackTrace();} finally {try {workbook.close(); // 关闭工作簿} catch (IOException e) {e.printStackTrace();}}}
}

2.2 读取 Excel 文件

下面是读取 Excel 文件的示例:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileInputStream;
import java.io.IOException;public class ReadExcel {public static void main(String[] args) {try (FileInputStream file = new FileInputStream("workbook.xlsx");Workbook workbook = new XSSFWorkbook(file)) {Sheet sheet = workbook.getSheetAt(0); // 获取第一个工作表Row row = sheet.getRow(0); // 获取第一行Cell cell = row.getCell(0); // 获取第一个单元格System.out.println("单元格值: " + cell.getStringCellValue()); // 输出单元格值} catch (IOException e) {e.printStackTrace();}}
}

2.3 设置单元格样式

可以设置单元格的样式,比如字体、边框、背景颜色等:

 
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileOutputStream;
import java.io.IOException;public class StyledExcel {public static void main(String[] args) {Workbook workbook = new XSSFWorkbook();Sheet sheet = workbook.createSheet("样式示例");// 创建单元格样式CellStyle style = workbook.createCellStyle();style.setBorderTop(BorderStyle.THIN);style.setBorderBottom(BorderStyle.THIN);style.setBorderLeft(BorderStyle.THIN);style.setBorderRight(BorderStyle.THIN);// 设置字体Font font = workbook.createFont();font.setBold(true);font.setColor(IndexedColors.BLUE.getIndex());style.setFont(font);Row row = sheet.createRow(0);Cell cell = row.createCell(0);cell.setCellValue("带样式的单元格");cell.setCellStyle(style); // 应用样式try (FileOutputStream fileOut = new FileOutputStream("styled_workbook.xlsx")) {workbook.write(fileOut);} catch (IOException e) {e.printStackTrace();} finally {try {workbook.close();} catch (IOException e) {e.printStackTrace();}}}
}

3. 操作 Word 文档

3.1 创建 Word 文档

创建一个简单的 Word 文档并添加文本的示例:

 
import org.apache.poi.xwpf.usermodel.*;import java.io.FileOutputStream;
import java.io.IOException;public class CreateWord {public static void main(String[] args) {XWPFDocument document = new XWPFDocument();// 添加段落XWPFParagraph paragraph = document.createParagraph();XWPFRun run = paragraph.createRun();run.setText("你好,Apache POI 的 Word 示例!");run.setBold(true);try (FileOutputStream out = new FileOutputStream("document.docx")) {document.write(out);} catch (IOException e) {e.printStackTrace();} finally {try {document.close(); // 关闭文档} catch (IOException e) {e.printStackTrace();}}}
}

3.2 读取 Word 文档

读取 Word 文档的示例代码如下:

 
import org.apache.poi.xwpf.usermodel.*;import java.io.FileInputStream;
import java.io.IOException;public class ReadWord {public static void main(String[] args) {try (FileInputStream fis = new FileInputStream("document.docx");XWPFDocument document = new XWPFDocument(fis)) {for (XWPFParagraph paragraph : document.getParagraphs()) {System.out.println(paragraph.getText()); // 输出段落内容}} catch (IOException e) {e.printStackTrace();}}
}

4. 操作 PowerPoint 演示文稿

4.1 创建 PowerPoint 演示文稿

创建一个简单的 PowerPoint 演示文稿的示例:

 
import org.apache.poi.xslf.usermodel.*;import java.io.FileOutputStream;
import java.io.IOException;public class CreatePowerPoint {public static void main(String[] args) {XMLSlideShow ppt = new XMLSlideShow();// 创建一个幻灯片XSLFSlide slide = ppt.createSlide();// 添加文本框XSLFTextBox textBox = slide.addTextBox();textBox.setText("你好,Apache POI 的 PowerPoint 示例!");try (FileOutputStream out = new FileOutputStream("presentation.pptx")) {ppt.write(out);} catch (IOException e) {e.printStackTrace();} finally {try {ppt.close(); // 关闭演示文稿} catch (IOException e) {e.printStackTrace();}}}
}

4.2 读取 PowerPoint 演示文稿

import org.apache.poi.xslf.usermodel.*;import java.io.FileInputStream;
import java.io.IOException;public class ReadPowerPoint {public static void main(String[] args) {try (FileInputStream fis = new FileInputStream("presentation.pptx");XMLSlideShow ppt = new XMLSlideShow(fis)) {for (XSLFSlide slide : ppt.getSlides()) {for (XSLFShape shape : slide.getShapes()) {if (shape instanceof XSLFTextShape) {XSLFTextShape textShape = (XSLFTextShape) shape;System.out.println(textShape.getText()); // 输出文本框内容}}}} catch (IOException e) {e.printStackTrace();}}
}


http://www.ppmy.cn/ops/127970.html

相关文章

汇川机器人与PLC通信-ModbusTCP超详细案例

#SCARA机器人与H5UPLC通过ModbusTCP通信,HMI界面手动操作# 应用背景: 本项目案例部分软件界面已被更新,如机器人示教软件旧版本S01.19R03。但通信的原理基本一致,废话少说,我们直接上图。 一、PLC端配置 1.添加ROB通讯表(自定义),变量表内容包括ROB系统变量,IN区和…

力扣 简单 83.删除排序链表中的重复元素

文章目录 题目介绍题解 题目介绍 题解 法一&#xff1a;带dummy node class Solution {public ListNode deleteDuplicates(ListNode head) {//根据提示&#xff0c;val的值在-100~100&#xff0c;如果括号里面不填则默认dummy.val0&#xff0c;可能会和某些测试用例的val一样…

git tag 用法

文章目录 git tag 用法1 概述2 基本用法2.1 创建标签2.1.1 创建轻量级标签2.1.2 创建附注标签 2.2 查看标签2.3 推送标签到远程仓库2.4 删除标签2.5 根据标签拉取代码2.6 注意事项 3 参考资料 git tag 用法 1 概述 git tag 是 Git 版本控制系统中的一个命令&#xff0c;用于为…

QGraphics类型学习使用【Qt】【C++】

QGraphics类型学习使用 需求过程全部完整代码 首先已知&#xff0c;QGraphicsView&#xff0c;QGraphicsScene, QGraphicsItem&#xff0c;分别称为&#xff1a;视图&#xff0c;场景&#xff0c;图元&#xff0c;图表就是各种各样的元素&#xff0c;图片元素&#xff0c;线条元…

“避免序列化灾难:掌握实现 Serializable 的真相!(二)”

文章目录 一、什么是序列化&#xff1f;二、Serializable 是如何起作用的&#xff1f;三、为什么不自动序列化所有对象&#xff1f;四、Java 序列化的底层原理序列化的核心步骤&#xff1a; 五、反序列化的原理六、总结&#xff1a;为什么必须实现 Serializable 才能序列化&…

ARM嵌入式学习--第四天

汇编与C混合编程 -汇编指令中调用C语言 .global _start _start:mov r0,#5mov r1,#3bl add stop:b stop int add(int a,int b) {int c a b;return c; } 无优化情况&#xff1a;&#xff08;反汇编之后&#xff0c;发现多了很多很多指令&#xff0c;运行之后结果是错误的&a…

k8s部署Kafka集群超详细讲解

准备部署环境 Kubernetes集群信息 NAMEVERSIONk8s-masterv1.29.2k8s-node01v1.29.2k8s-node02v1.29.2 Kafka&#xff1a;3.7.1版本&#xff0c;apche版本 Zookeeper&#xff1a;3.6.3版本 准备StorageClass # kubectl get sc NAME PROVISIONER RECLA…

旅游攻略网站毕业设计计算机毕设基于SpringBootSSM框架

目录 1.摘要 2 引言 2.1 开发目标 2.2 项目内容 2.3 项目背景与目的 3. 技术选型 3.1 JAVA 简介 3.2 MySQL 介绍 ‌4. 功能描述与创新点 4.1 功能描述 ‌4.2创新点设计 4.3 功能图展示 5. 数据库设计 6. 项目任务与要求 1.摘要 本文旨在设计并实现一个功能全面、…