Java Excel导出

简介

在Java开发中,经常需要将数据导出到Excel表格中。Excel是一种流行的电子表格软件,它提供了丰富的功能和格式化选项。本文将介绍如何使用Java将数据导出到Excel,并提供代码示例。

Excel导出工具

为了简化Excel导出的过程,我们可以使用POI库。POI(Poor Obfuscation Implementation)是一个用于处理Microsoft Office格式文件的Java库。它提供了读写Excel文件的功能。

导入POI库

在使用POI库之前,需要先导入相关的依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖:

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

导出到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 ExcelExporter {
    public static void main(String[] args) {
        // 创建工作簿
        Workbook workbook = new XSSFWorkbook();
        // 创建工作表
        Sheet sheet = workbook.createSheet("Sheet1");

        // 创建首行
        Row headerRow = sheet.createRow(0);
        CellStyle headerCellStyle = workbook.createCellStyle();
        headerCellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
        headerCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);

        // 设置首行标题
        String[] headers = {"Name", "Age", "Email"};
        for (int i = 0; i < headers.length; i++) {
            Cell cell = headerRow.createCell(i);
            cell.setCellValue(headers[i]);
            cell.setCellStyle(headerCellStyle);
        }

        // 填充数据
        String[][] data = {
                {"John Doe", "30", "johndoe@example.com"},
                {"Jane Smith", "25", "janesmith@example.com"},
                {"Tom Johnson", "35", "tomjohnson@example.com"}
        };
        int rowNum = 1;
        for (String[] rowData : data) {
            Row row = sheet.createRow(rowNum++);
            for (int i = 0; i < rowData.length; i++) {
                row.createCell(i).setCellValue(rowData[i]);
            }
        }

        // 调整列宽
        for (int i = 0; i < headers.length; i++) {
            sheet.autoSizeColumn(i);
        }

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

在上述示例中,我们首先创建了一个工作簿(Workbook)和一个工作表(Sheet)。然后,我们创建了首行并设置了标题。接下来,我们填充了数据,并调整了列宽度。最后,我们将工作簿保存到一个文件中。

类图

使用Mermaid语法,我们可以绘制以下类图,展示了上述示例中使用的主要类:

classDiagram
    class Workbook
    class Sheet
    class Row
    class Cell
    class CellStyle

    Workbook <|-- XSSFWorkbook
    Sheet <|-- XSSFSheet
    Row <|-- XSSFRow
    Cell <|-- XSSFCell

在上述类图中,Workbook表示整个Excel工作簿,Sheet表示工作簿中的一个表单,Row表示表单中的一行,Cell表示行中的一个单元格,CellStyle表示单元格的样式。XSSFWorkbookXSSFSheetXSSFRowXSSFCell是POI库中特定于XLSX文件格式的实现类。

结论

通过使用POI库,我们可以轻松地将数据导出到Excel文件中。在本文中,我们介绍了如何使用Java和POI库进行Excel导出,并提供了相应的代码示例。通过自定义样式和格式,您可以根据需要进行更高级的Excel导出操作。