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

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/


http://www.kler.cn/a/298957.html

相关文章:

  • AI芯片常见概念
  • CE之植物大战僵尸植物无冷却
  • Mysql复习(二)
  • python coding(二) Pandas 、PIL、cv2
  • (14)D-FINE网络,爆锤yolo系列
  • Hutool工具包的常用工具类的使用介绍
  • [网鼎杯 2020 朱雀组]Nmap 历程记录
  • Java 远程执行服务器上的命令
  • HP电脑如何启动硬件检测
  • 数据结构应用实例(六)——最短路径
  • CCF刷题计划——坐标变换(其二)(前缀和)
  • Dubbo 与 Zookeeper 在项目中的应用:原理与实现详解
  • 深入理解Java虚拟机:Jvm总结-垃圾收集器与内存分配策略
  • 【C++】list的使用与简单模拟实现
  • 通过Python调用Excel VBA宏:扩展自动化能力的深度探索
  • 深入理解java并发编程之aqs框架
  • ABB机器人教程:外部调用例行程序功能介绍与使用方法
  • 流媒体之HLS协议(其三)
  • 动态规划-最长回文子序列
  • Android自动化1️⃣环境搭建【基于Appium】-基于python
  • 在执行django定时任务中,遇到的celery woker生命周期问题
  • 【区块链 + 基层治理】基层党建投票应用“We 投票” | FISCO BCOS应用案例
  • 掌握python-pptx:打造专业PPT表格
  • MIT6.824 课程-GFS
  • PyCharm修改背景颜色、修改字体大小+Python常用快捷键+Python常见的运算符
  • 【PyQt6 应用程序】一键视频解说克隆字幕切割版