Java读写Excel文件工具类

引言

在日常的开发中,我们经常需要处理Excel文件,包括读取和写入数据。Java提供了一种方便的方式来处理Excel文件,通过Apache POI库可以轻松地读写Excel文件。本文将介绍如何使用Java读写Excel文件的工具类,并提供相应的代码示例。

准备工作

在开始之前,我们需要准备一些工具和环境:

  1. JDK:确保安装了Java Development Kit (JDK)。
  2. Apache POI:下载并导入Apache POI库。

工具类设计

在开始编写代码之前,我们需要先设计一个合适的工具类。这个工具类应该包含以下功能:

  1. 读取Excel文件:从Excel文件中读取数据。
  2. 写入Excel文件:将数据写入到Excel文件中。

我们可以将这个工具类命名为ExcelUtils。

ExcelUtils类的实现

我们先来实现ExcelUtils类。首先,我们需要导入Apache POI库中相关的类:

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

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

读取Excel文件

接下来,我们可以编写ExcelUtils类的readExcel方法,用于读取Excel文件。readExcel方法需要传入要读取的Excel文件路径,并返回一个包含Excel数据的List对象。

public class ExcelUtils {

    public static List<List<String>> readExcel(String filePath) throws IOException {
        List<List<String>> data = new ArrayList<>();
        FileInputStream fis = new FileInputStream(filePath);
        Workbook workbook = new XSSFWorkbook(fis);
        Sheet sheet = workbook.getSheetAt(0);
        Iterator<Row> rowIterator = sheet.iterator();

        while (rowIterator.hasNext()) {
            Row row = rowIterator.next();
            Iterator<Cell> cellIterator = row.cellIterator();
            List<String> rowData = new ArrayList<>();

            while (cellIterator.hasNext()) {
                Cell cell = cellIterator.next();
                rowData.add(cell.toString());
            }

            data.add(rowData);
        }

        workbook.close();
        fis.close();

        return data;
    }
}

写入Excel文件

接下来,我们可以编写ExcelUtils类的writeExcel方法,用于将数据写入Excel文件中。writeExcel方法需要传入要写入的Excel文件路径和要写入的数据,并将数据写入到Excel文件中。

public class ExcelUtils {

    // ...

    public static void writeExcel(String filePath, List<List<String>> data) throws IOException {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Sheet1");

        int rowNum = 0;
        for (List<String> rowData : data) {
            Row row = sheet.createRow(rowNum++);

            int cellNum = 0;
            for (String cellData : rowData) {
                Cell cell = row.createCell(cellNum++);
                cell.setCellValue(cellData);
            }
        }

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

使用示例

现在我们可以使用ExcelUtils类来读写Excel文件。以下是一些使用示例:

读取Excel文件

public class Main {

    public static void main(String[] args) {
        try {
            List<List<String>> data = ExcelUtils.readExcel("data.xlsx");

            for (List<String> rowData : data) {
                for (String cellData : rowData) {
                    System.out.print(cellData + "\t");
                }
                System.out.println();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

写入Excel文件

public class Main {

    public static void main(String[] args) {
        try {
            List<List<String>> data = new ArrayList<>();
            List<String> rowData1 = new ArrayList<>();
            rowData1.add("John");
            rowData1.add("Doe");
            data.add(rowData1);

            List<String> rowData2 = new ArrayList<>();
            rowData2.add("Jane");
            rowData2.add("Smith");
            data.add(rowData2);

            ExcelUtils.writeExcel("data.xlsx", data);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

总结

通过Apache POI库,我们可以轻松地读写Excel文件。本文介绍了如何使用Java读写Excel文件的工具类,并提供了相应的代码示例。希望本文对于学习Excel文件处理有所帮助。