Java生成Excel表格

Excel是一种非常常见的办公软件,它可以用来存储和处理各种数据。在Java中,我们可以使用一些开源的库来生成和操作Excel表格。本文将介绍如何使用Java生成Excel表格,并通过代码示例详细说明。

1. Apache POI库

Apache POI是一个用于读取和写入Microsoft Office格式文件的开源Java库,包括Excel、Word和PowerPoint等格式。它提供了丰富的API,可以方便地操作Excel表格。

1.1 安装Apache POI库

要使用Apache POI库,首先需要在项目中添加相关的依赖。在Maven项目中,可以在pom.xml文件中添加以下代码:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.2</version>
</dependency>

1.2 创建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 ExcelGenerator {

    public static void main(String[] args) {
        try (Workbook workbook = new XSSFWorkbook()) {
            // 创建第一个工作表
            Sheet sheet1 = workbook.createSheet("Sheet1");
            // 创建第二个工作表
            Sheet sheet2 = workbook.createSheet("Sheet2");

            // 向第一个工作表添加数据
            Row row1 = sheet1.createRow(0);
            Cell cell1 = row1.createCell(0);
            cell1.setCellValue("Hello");
            Cell cell2 = row1.createCell(1);
            cell2.setCellValue("World");

            // 向第二个工作表添加数据
            Row row2 = sheet2.createRow(0);
            Cell cell3 = row2.createCell(0);
            cell3.setCellValue("Java");
            Cell cell4 = row2.createCell(1);
            cell4.setCellValue("Excel");

            // 保存Excel表格到文件
            try (FileOutputStream fileOut = new FileOutputStream("workbook.xlsx")) {
                workbook.write(fileOut);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上面的代码中,我们使用XSSFWorkbook类创建了一个新的Excel工作簿。然后,我们使用createSheet方法创建了两个工作表,并使用createRow方法创建了行,使用createCell方法创建了单元格。最后,我们使用FileOutputStream将工作簿写入到文件中。

1.3 读取Excel表格

除了创建Excel表格,我们还可以使用Apache POI库来读取现有的Excel表格。以下是一个示例代码,用于读取之前创建的Excel表格:

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

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

public class ExcelReader {

    public static void main(String[] args) {
        try (FileInputStream fileIn = new FileInputStream("workbook.xlsx");
             Workbook workbook = new XSSFWorkbook(fileIn)) {
            // 获取第一个工作表
            Sheet sheet1 = workbook.getSheetAt(0);
            // 获取第二个工作表
            Sheet sheet2 = workbook.getSheetAt(1);

            // 读取第一个工作表的数据
            Row row1 = sheet1.getRow(0);
            Cell cell1 = row1.getCell(0);
            System.out.println(cell1.getStringCellValue());
            Cell cell2 = row1.getCell(1);
            System.out.println(cell2.getStringCellValue());

            // 读取第二个工作表的数据
            Row row2 = sheet2.getRow(0);
            Cell cell3 = row2.getCell(0);
            System.out.println(cell3.getStringCellValue());
            Cell cell4 = row2.getCell(1);
            System.out.println(cell4.getStringCellValue());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上面的代码中,我们使用FileInputStream从文件中读取Excel表格。然后,我们使用getSheetAt方法获取工作表,使用getRow方法获取行,使用getCell方法获取单元格,并使用getStringCellValue方法获取单元格的值。

2. EasyExcel库

EasyExcel是另一个开源的用于读写Excel文件的Java库。它提供了简单易用的API,可以高效地生成和解析Excel文件。