Java POI库详解:从入门到精通

Java POI库是一个强大的开源库,主要用于处理Microsoft Office文档,包括Excel、Word、PowerPoint等。通过Apache POI库,Java开发者可以非常方便地读写这些文档格式。本文将从入门到精通,详细介绍Java POI库,并给出相关代码示例。

一、环境搭建

在开始之前,首先需要在项目中引入Apache POI库。可以通过Maven来方便地管理依赖。在pom.xml中添加以下依赖:

<dependencies>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>5.2.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>5.2.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.xmlbeans</groupId>
        <artifactId>xmlbeans</artifactId>
        <version>5.1.1</version>
    </dependency>
</dependencies>

二、读取Excel文件

下面的代码示例演示了如何使用Apache POI库读取一个Excel文件:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileInputStream;
import java.io.IOException;

public class ReadExcel {
    public static void main(String[] args) {
        String filePath = "example.xlsx"; // Excel文件路径
        try (FileInputStream fis = new FileInputStream(filePath);
             Workbook workbook = new XSSFWorkbook(fis)) {

            Sheet sheet = workbook.getSheetAt(0); // 获取第一个Sheet
            for (Row row : sheet) {
                for (Cell cell : row) {
                    switch (cell.getCellType()) {
                        case STRING:
                            System.out.print(cell.getStringCellValue() + " ");
                            break;
                        case NUMERIC:
                            System.out.print(cell.getNumericCellValue() + " ");
                            break;
                        case BOOLEAN:
                            System.out.print(cell.getBooleanCellValue() + " ");
                            break;
                        default:
                    }
                }
                System.out.println();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

此代码读取一个名为example.xlsx的Excel文件,遍历第一张表中的每一行和每一单元格,打印出内容。

三、写入Excel文件

接下来要介绍如何创建一个Excel文件并写入数据。以下是一个简单的示例:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.io.IOException;

public class WriteExcel {
    public static void main(String[] args) {
        Workbook workbook = new XSSFWorkbook(); // 创建工作簿
        Sheet sheet = workbook.createSheet("Sample Sheet"); // 创建Sheet

        for (int i = 0; i < 10; i++) {
            Row row = sheet.createRow(i); // 创建行
            for (int j = 0; j < 5; j++) {
                Cell cell = row.createCell(j); // 创建单元格
                cell.setCellValue("Row " + i + ", Cell " + j); // 设置单元格值
            }
        }

        try (FileOutputStream fos = new FileOutputStream("output.xlsx")) {
            workbook.write(fos); // 将数据写入文件
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                workbook.close(); // 关闭工作簿
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

这段代码创建了一个名为output.xlsx的Excel文件,并在其中填充了一些简单的数据。

四、POI库的高级用法

除了基本的读写操作,POI库还支持公式的计算、图表的生成以及单元格样式的设置等高级操作。以下是设置单元格样式的示例:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;

public class StyledExcel {
    public static void main(String[] args) {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Styled Sheet");

        CellStyle style = workbook.createCellStyle();
        style.setBorderBottom(BorderStyle.THIN);
        style.setBorderTop(BorderStyle.THIN);
        style.setBorderLeft(BorderStyle.THIN);
        style.setBorderRight(BorderStyle.THIN);
        style.setAlignment(HorizontalAlignment.CENTER);

        Row row = sheet.createRow(0);
        Cell cell = row.createCell(0);
        cell.setCellValue("Styled Cell");
        cell.setCellStyle(style); // 应用样式

        try (FileOutputStream fos = new FileOutputStream("styled_output.xlsx")) {
            workbook.write(fos);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                workbook.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

在这个示例中,我们创建了一个单元格样式并将其应用于一个单元格。样式包括边框和居中对齐。

五、总结

Apache POI库为Java开发者提供了强大的Office文档处理能力。无论是简单的读写操作,还是复杂的样式设置和公式计算,POI库都能轻松应对。通过本文所介绍的内容,你应该能够在自己的Java应用中使用POI库处理Excel文档,并不断探索其更多功能,以满足项目需求。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部