使用Java操作本地Excel文件

在现代软件开发中,Excel文件广泛应用于数据存储和管理。在Java中,处理Excel文件可以通过Apache POI库来实现。Apache POI是一个强大的库,它支持读取和写入Office格式的文件,包括Excel(.xls和.xlsx)。在本篇文章中,我们将学习如何使用Java读取和写入本地的Excel文件。

环境准备

首先,确保你已经安装了Java开发环境。在你的项目中添加Apache POI的依赖。如果你使用Maven,可以在pom.xml中添加如下依赖:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.2</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.2</version>
</dependency>

读取Excel文件

下面是一个简单的示例,展示如何读取本地的Excel文件。假设我们有一个Excel文件,路径为data.xlsx,它包含一些用户信息。

import java.io.FileInputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ReadExcelExample {
    public static void main(String[] args) {
        String excelFilePath = "data.xlsx";
        
        try (FileInputStream fis = new FileInputStream(excelFilePath);
             Workbook workbook = new XSSFWorkbook(fis)) {
            
            Sheet sheet = workbook.getSheetAt(0); // 获取第一个工作表
            
            for (Row row : sheet) {
                // 读取每一行的单元格
                String name = row.getCell(0).getStringCellValue();
                int age = (int) row.getCell(1).getNumericCellValue();
                System.out.println("Name: " + name + ", Age: " + age);
            }
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

代码解析

在上面的代码中,我们首先通过FileInputStream读取Excel文件,然后创建一个XSSFWorkbook对象以处理.xlsx格式的文件。接着,获取第一个工作表并遍历每一行,逐个读取单元格的值。在示例中,我们假设第一列是姓名,第二列是年龄。

写入Excel文件

除了读取Excel文件,我们也可以创建或修改Excel文件。下面的示例展示了如何创建一个新的Excel文件并写入数据。

import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class WriteExcelExample {
    public static void main(String[] args) {
        String excelFilePath = "output.xlsx";
        
        try (Workbook workbook = new XSSFWorkbook();
             FileOutputStream fos = new FileOutputStream(excelFilePath)) {
            
            Sheet sheet = workbook.createSheet("Users"); // 创建一个工作表
            
            // 写入标题行
            Row headerRow = sheet.createRow(0);
            headerRow.createCell(0).setCellValue("Name");
            headerRow.createCell(1).setCellValue("Age");
            
            // 写入数据
            Row row1 = sheet.createRow(1);
            row1.createCell(0).setCellValue("Alice");
            row1.createCell(1).setCellValue(30);
            
            Row row2 = sheet.createRow(2);
            row2.createCell(0).setCellValue("Bob");
            row2.createCell(1).setCellValue(25);
            
            workbook.write(fos); // 写入到文件
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

代码解析

在这个写入示例中,我们先创建一个新的Workbook和Sheet,然后写入标题行及几条用户数据。最后,通过FileOutputStream把数据写入output.xlsx文件。

结尾

通过上述示例,我们学习了如何使用Java的Apache POI库读取和写入本地Excel文件。这些基本操作可以帮助你在项目中处理Excel相关的任务。无论是在数据报告生成、用户信息管理还是其他各种应用场景中,掌握这些技能都能让你事半功倍。如果你有兴趣深入学习,可以查阅Apache POI的官方文档,了解更多复杂的操作和功能。