Apache POI——轻松操作Office文档

一、简介

Apache POI是一个用于创建、读取和操作Microsoft Office格式文件的Java库。它支持的文件格式包括Excel、Word和PowerPoint等。通过Apache POI,我们可以轻松地读取、写入或修改Excel文件、Word文档等Microsoft Office格式文件。

Apache POI的核心API是HSSF(Horrible Spreadsheet Format)、XSSF(XML Spreadsheet Format)和SXSSF(Streaming Usermodel API)。它们支持不同的Excel格式文件,可以根据实际需求进行选择。另外,Apache POI还支持对word文档进行读写操作。下面将详细介绍如何使用Apache POI进行Office文档的操作。

二、读取Excel文件

对于读取Excel文件,Apache POI提供了HSSF和XSSF两个核心API。下面以HSSF为例进行介绍。

1. 读取Excel文件中的数据

public static void readExcelFile(String filePath) throws IOException {
    FileInputStream fileInputStream = new FileInputStream(filePath);
    Workbook workbook = new HSSFWorkbook(fileInputStream);

    // 获取第一个sheet
    Sheet sheet = workbook.getSheetAt(0);

    for (int i = 0; i <= sheet.getLastRowNum(); i++) {
        Row row = sheet.getRow(i);
        for (int j = 0; j < row.getLastCellNum(); j++) {
            Cell cell = row.getCell(j);
            System.out.print(cell.getStringCellValue() + "\t");
        }
        System.out.println();
    }
    fileInputStream.close();
}

上面的代码中,首先通过HSSFWorkbook类读取Excel文件,然后获取第一个sheet。接着,遍历每一行的每一个单元格,并输出其值。

2. 读取Excel文件中的特定数据

public static void readExcelFileWithCondition(String filePath, String condition) throws IOException {
    FileInputStream fileInputStream = new FileInputStream(filePath);
    Workbook workbook = new HSSFWorkbook(fileInputStream);

    // 获取第一个sheet
    Sheet sheet = workbook.getSheetAt(0);

    for (int i = 0; i <= sheet.getLastRowNum(); i++) {
        Row row = sheet.getRow(i);
        for (int j = 0; j < row.getLastCellNum(); j++) {
            Cell cell = row.getCell(j);
            if (cell.getStringCellValue().contains(condition)) {
                System.out.println("找到特定数据:" + cell.getStringCellValue());
                break;
            }
        }
    }
    fileInputStream.close();
}

上面的代码中,通过参数传入特定数据的条件,然后在读取Excel文件时进行判断,如果单元格中包含该条件,则输出该单元格的值。

三、写入Excel文件

对于写入Excel文件,Apache POI同样提供了HSSF和XSSF两个核心API。下面以HSSF为例进行介绍。

1. 写入Excel文件中的数据

public static void writeExcelFile(String filePath) throws IOException {
    Workbook workbook = new HSSFWorkbook();
    Sheet sheet = workbook.createSheet("sheet1");

    Row row = sheet.createRow(0);
    row.createCell(0).setCellValue("姓名");
    row.createCell(1).setCellValue("年龄");
    row = sheet.createRow(1);
    row.createCell(0).setCellValue("张三");
    row.createCell(1).setCellValue(18);

    FileOutputStream fileOutputStream = new FileOutputStream(filePath);
    workbook.write(fileOutputStream);
    fileOutputStream.flush();
    fileOutputStream.close();
}

上面的代码中,首先创建一个HSSFWorkbook对象,然后创建一个名为”sheet1″的sheet。接着,创建第一行,并设置单元格的值。最后,将文件保存到指定路径下。

2. 写入Excel文件中的数据并设置样式

public static void writeExcelFileWithStyle(String filePath) throws IOException{
    Workbook workbook = new HSSFWorkbook();
    Sheet sheet = workbook.createSheet("sheet1");

    // 创建样式
    CellStyle cellStyle = workbook.createCellStyle();
    cellStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
    cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);

    // 第一行
    Row row = sheet.createRow(0);
    Cell cell = row.createCell(0);
    cell.setCellValue("姓名");
    cell.setCellStyle(cellStyle);
    cell = row.createCell(1);
    cell.setCellValue("年龄");
    cell.setCellStyle(cellStyle);

    // 数据行
    row = sheet.createRow(1);
    cell = row.createCell(0);
    cell.setCellValue("张三");
    cell = row.createCell(1);
    cell.setCellValue(18);

    // 保存文件
    FileOutputStream fileOutputStream = new FileOutputStream(filePath);
    workbook.write(fileOutputStream);
    fileOutputStream.flush();
    fileOutputStream.close();
}

上面的代码中,首先创建一个HSSFWorkbook对象,然后创建一个名为”sheet1″的sheet。接着,创建样式并应用到第一行的单元格中。最后,将文件保存到指定路径下。

四、操作Word文档

除了Excel文件,Apache POI还支持对Word文档的读写操作。下面以读取Word文档为例进行介绍。

public static void readWordFile(String filePath) throws IOException {
    FileInputStream fileInputStream = new FileInputStream(filePath);
    XWPFDocument xwpfDocument = new XWPFDocument(fileInputStream);

    List paragraphs = xwpfDocument.getParagraphs();

    for (XWPFParagraph paragraph : paragraphs) {
        System.out.println(paragraph.getText());
    }

    fileInputStream.close();
}

上面的代码中,首先通过XWPFDocument类读取Word文件,然后获取所有段落,并输出每个段落的内容。

五、小结

通过本文的介绍,我们了解了Apache POI库的基本使用。可以看出,Apache POI大大简化了Office文档的操作,让Java程序员更加轻松地处理Excel、Word等文档。当然,Apache POI还提供了丰富的API,可以满足更加复杂的场景需求。希望本文能够帮助读者更好地掌握Apache POI的使用。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/272302.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-17 13:55
下一篇 2024-12-17 13:55

相关推荐

  • Python栈操作用法介绍

    如果你是一位Python开发工程师,那么你必须掌握Python中的栈操作。在Python中,栈是一个容器,提供后进先出(LIFO)的原则。这篇文章将通过多个方面详细地阐述Pytho…

    编程 2025-04-29
  • 使用Spire.PDF进行PDF文档处理

    Spire.PDF是一款C#的PDF库,它可以帮助开发者快速、简便地处理PDF文档。本篇文章将会介绍Spire.PDF库的一些基本用法和常见功能。 一、PDF文档创建 创建PDF文…

    编程 2025-04-29
  • Python操作数组

    本文将从多个方面详细介绍如何使用Python操作5个数组成的列表。 一、数组的定义 数组是一种用于存储相同类型数据的数据结构。Python中的数组是通过列表来实现的,列表中可以存放…

    编程 2025-04-29
  • Python操作MySQL

    本文将从以下几个方面对Python操作MySQL进行详细阐述: 一、连接MySQL数据库 在使用Python操作MySQL之前,我们需要先连接MySQL数据库。在Python中,我…

    编程 2025-04-29
  • Python代码实现回文数最少操作次数

    本文将介绍如何使用Python解决一道经典的回文数问题:给定一个数n,按照一定规则对它进行若干次操作,使得n成为回文数,求最少的操作次数。 一、问题分析 首先,我们需要了解回文数的…

    编程 2025-04-29
  • Python磁盘操作全方位解析

    本篇文章将从多个方面对Python磁盘操作进行详细阐述,包括文件读写、文件夹创建、删除、文件搜索与遍历、文件重命名、移动、复制、文件权限修改等常用操作。 一、文件读写操作 文件读写…

    编程 2025-04-29
  • Python元祖操作用法介绍

    本文将从多个方面对Python元祖的操作进行详细阐述。包括:元祖定义及初始化、元祖遍历、元祖切片、元祖合并及比较、元祖解包等内容。 一、元祖定义及初始化 元祖在Python中属于序…

    编程 2025-04-29
  • 如何用Python对数据进行离散化操作

    数据离散化是指将连续的数据转化为离散的数据,一般是用于数据挖掘和数据分析中,可以帮助我们更好的理解数据,从而更好地进行决策和分析。Python作为一种高效的编程语言,在数据处理和分…

    编程 2025-04-29
  • Python列表的读写操作

    本文将针对Python列表的读取与写入操作进行详细的阐述,包括列表的基本操作、列表的增删改查、列表切片、列表排序、列表反转、列表拼接、列表复制等操作。 一、列表的基本操作 列表是P…

    编程 2025-04-29
  • Python序列的常用操作

    Python序列是程序中的重要工具,在数据分析、机器学习、图像处理等很多领域都有广泛的应用。Python序列分为三种:列表(list)、元组(tuple)和字符串(string)。…

    编程 2025-04-28

发表回复

登录后才能评论