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读取数据
java 复制代码
//通过遍历工作表获得行,遍历行获得单元格,最终获取单元格中的值。
//创建工作簿
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表格封装了几个核心对象:

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

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

java 复制代码
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 {
                // 关闭workbook
                if (workbook != null) {
                    workbook.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

四、POI操作Word

4.1读取 Word 文件

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

java 复制代码
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 来实现。

java 复制代码
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/

相关推荐
网络豆15 天前
Apache Maven 鸿蒙 PC 适配全记录:把 JVM 构建工具交付到 HiShell
maven·apache·harmonyos
网络豆15 天前
Apache Hive 鸿蒙 PC 适配全记录:以 Qt 客户端打通 HiveQL、监控与元数据访问
hive·apache·harmonyos
网络豆15 天前
Apache HBase 鸿蒙 PC 适配全记录:用 Qt 原生客户端打通 REST 管理与数据读写
apache·hbase·harmonyos
无巧不成书021816 天前
Apache Tomcat 9 下载全指南(Windows,Linux,macOS):版本选型、国内镜像、SHA-512 与 PGP 完整性校验
windows·tomcat·apache
Dream-Y.ocean16 天前
鸿蒙平台 Apache Tomcat 管理控制台适配实战:基于 Electron 壳方案的真实 HTTP 服务器实现
tomcat·apache·harmonyos
betazhou16 天前
Apache seatunel常用配置参数解析说明
apache·seatunnel
凤山老林17 天前
Spring Boot 集成 Apache Kafka Streams 构建流处理应用:状态存储、窗口聚合与
spring boot·kafka·apache
DolphinScheduler社区18 天前
Apache DolphinScheduler 8 月报:权限安全加固,调度补火上线,性能与稳定性持续提升
大数据·安全·开源·apache·任务调度·海豚调度
sbjdhjd18 天前
从 7 字符文件名拼接到二维数组取值:PHP 无参函数限制下的受控靶场复盘 | (7字符绕过)
网络·nginx·安全·网络安全·云计算·php·apache
Jackyzhe19 天前
Apache Iceberg Variant 类型:v3 半结构化数据不再「二选一」
apache