Apache POI用法示例详解

 更新时间:2024年09月12日 11:34:04   作者:JH3073  
Apache POI是一个开源的Java API,用于处理Microsoft Office文档,提供了多种组件,例如HSSF、XSSF等,以支持不同格式如Excel、Word、PowerPoint等文件的读写操作,本文介绍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 {
                // 关闭workbook
                if (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/

到此这篇关于Apache POI用法示例详解的文章就介绍到这了,更多相关Apache POI用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Linux学习第一天——ssh登录和软件安装详解

    Linux学习第一天——ssh登录和软件安装详解

    这篇文章主要介绍了Linux学习第一天——ssh登录和软件安装详解 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2016-12-12
  • 深入解读Linux进程函数fork(),vfork(),execX()

    深入解读Linux进程函数fork(),vfork(),execX()

    这篇文章主要介绍了深入解读Linux进程函数fork(),vfork(),execX(),分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • CentOS6.5环境下使用rsync增量同步备份文件的方法

    CentOS6.5环境下使用rsync增量同步备份文件的方法

    这篇文章主要介绍了CentOS6.5环境下使用rsync增量同步备份文件的方法,结合实例形式分析了rsync进行文件同步备份操作的相关命令与使用技巧,需要的朋友可以参考下
    2018-04-04
  • Linux与Windows编码不一致的解决方案

    Linux与Windows编码不一致的解决方案

    本篇文章给大家总结了Linux与Windows编码不一致的解决方法以及相关注意点,有需要的朋友参考下。
    2018-03-03
  • 详解linux系统调用原理

    详解linux系统调用原理

    这篇文章给大家详细讲述了linux系统调用原理的相关知识点内容,对此有兴趣的朋友参考学习下。
    2018-08-08
  • Ubuntu下使用python3中的venv创建虚拟环境

    Ubuntu下使用python3中的venv创建虚拟环境

    这篇文章主要介绍了Ubuntu下使用python3中的venv创建虚拟环境,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • 解决访问不到Linux服务器中RabbitMQ管理页面问题

    解决访问不到Linux服务器中RabbitMQ管理页面问题

    大家好,本篇文章主要讲的是解决访问不到Linux服务器中RabbitMQ管理页面问题,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • 在Ubuntu上打不开GitHub的完整解决方法

    在Ubuntu上打不开GitHub的完整解决方法

    当你满心欢喜打开Ubuntu准备推送代码时,突然发现终端里的git push卡成狗,浏览器里的GitHub页面直接变成Whoa there!警告页面,本文就这个问题小编给大家介绍了当你在Ubuntu上打不开GitHub时的终极自救指南,需要的朋友可以参考下
    2025-09-09
  • Linux硬盘合并的实现代码

    Linux硬盘合并的实现代码

    这篇文章主要介绍了Linux硬盘合并的实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • Linux模拟实现sleep函数

    Linux模拟实现sleep函数

    这篇文章主要为大家详细介绍了Linux模拟实现sleep函数,让程序休眠一定的秒数,到时间后自动恢复运行
    2017-04-04

最新评论