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/

相关推荐
s甜甜的学习之旅15 小时前
Apache POI练习代码
apache
是小崔啊15 小时前
开源轮子 - Apache Common
java·开源·apache
程序猿阿伟21 小时前
《探索 Apache Spark MLlib 与 Java 结合的卓越之道》
java·spark-ml·apache
开心工作室_kaic1 天前
springboot461学生成绩分析和弱项辅助系统设计(论文+源码)_kaic
开发语言·数据库·vue.js·php·apache
cr.sheeper2 天前
Vulnhub靶场Apache解析漏洞
网络安全·apache
ccc_9wy2 天前
Apache Solr RCE(CVE-2017-12629)--vulhub
apache·solr·lucene·burp suite·vulhub·远程命令执行漏洞rce·cve-2017-12629
ccc_9wy3 天前
Apache Solr RCE(CVE-2019-0193)--vulhub
网络安全·apache·solr·lucene·vulhub·cve-2019-0193·远程命令执行漏洞rce
casual_clover3 天前
搭建一个简单的Web服务器(Apache2.4)
服务器·apache
李三醒3 天前
Apache Tomcat 漏洞CVE-2024-50379条件竞争文件上传漏洞 servlet readonly spring boot 修复方式
spring boot·tomcat·apache
鸠摩智首席音效师3 天前
Apache 如何监听多个端口 ?
apache