Java 将 JSON 数据转为 Excel 输出的实现指南

在现代软件开发中,数据格式的转换是一个常见的任务。做为一名刚入行的小白,将 JSON 数据转换为 Excel 文件是一个实用的技能。本文将指导你如何在 Java 中实现这一功能。本指南将分为几个步骤,并逐步演示每一步的代码实现。

一、整体流程

我们处理的整体流程分为以下几步:

步骤 描述
1. 准备工作 创建 Java 项目并导入必要的库
2. 创建数据源 准备一份 JSON 数据
3. 解析 JSON 将 JSON 数据解析成 Java 对象
4. 导出 Excel 将 Java 对象输出到 Excel 文件
5. 完成 验证生成的 Excel 文件

二、详细步骤

1. 准备工作

创建一个新的 Java 项目,确保你已经添加了以下依赖库:

  • [Jackson]( - 用于解析 JSON
  • [Apache POI]( - 用于创建 Excel 文件

如果你使用 Maven,请在 pom.xml 中添加以下依赖:

<dependencies>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.12.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>5.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>5.0.0</version>
    </dependency>
</dependencies>

2. 创建数据源

在开始之前,需要准备一份 JSON 数据。以下是一个例子:

[
    {"name": "Alice", "age": 24, "email": "alice@example.com"},
    {"name": "Bob", "age": 30, "email": "bob@example.com"},
    {"name": "Charlie", "age": 22, "email": "charlie@example.com"}
]

3. 解析 JSON

使用 Jackson 库将 JSON 数据解析为 Java 对象。首先,定义一个 Java 类来表示 JSON 中的对象。

public class Person {
    private String name;
    private int age;
    private String email;

    // Getter 和 Setter
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public int getAge() { return age; }
    public void setAge(int age) { this.age = age; }
    public String getEmail() { return email; }
    public void setEmail(String email) { this.email = email; }
}

接下来,我们使用 Jackson 来解析 JSON。以下是解析 JSON 的代码:

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.File;
import java.io.IOException;
import java.util.List;

public class JsonToExcel {
    public static List<Person> readJson(String filePath) throws IOException {
        ObjectMapper objectMapper = new ObjectMapper();
        
        // 读取 JSON 文件并转换为 List<Person>
        return objectMapper.readValue(new File(filePath), new TypeReference<List<Person>>() {});
    }
}

4. 导出 Excel

现在我们已经将 JSON 数据解析成 Java 对象,接下来要将其导出为 Excel。以下是实现的代码:

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

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;

public class JsonToExcel {
    // 之前的 readJson 方法...

    public static void writeExcel(List<Person> personList, String outputPath) throws IOException {
        Workbook workbook = new XSSFWorkbook(); // 创建一个新的 Excel 工作簿
        Sheet sheet = workbook.createSheet("People"); // 在工作簿中创建一个工作表

        // 创建表头
        Row headerRow = sheet.createRow(0);
        headerRow.createCell(0).setCellValue("Name");
        headerRow.createCell(1).setCellValue("Age");
        headerRow.createCell(2).setCellValue("Email");

        // 填充数据
        int rowIndex = 1; // 从第二行开始填充数据
        for (Person person : personList) {
            Row row = sheet.createRow(rowIndex++);
            row.createCell(0).setCellValue(person.getName());
            row.createCell(1).setCellValue(person.getAge());
            row.createCell(2).setCellValue(person.getEmail());
        }

        // 写入到文件
        try (FileOutputStream fileOut = new FileOutputStream(outputPath)) {
            workbook.write(fileOut);
        }

        // 关闭 Workbook
        workbook.close();
    }
}

5. 完成

现在,我们可以将这些步骤整合在一起,实现整个程序的入口点:

public class Main {
    public static void main(String[] args) {
        String jsonFilePath = "people.json"; // JSON 文件路径
        String excelFilePath = "people.xlsx"; // 输出的 Excel 文件路径
        
        try {
            List<Person> personList = JsonToExcel.readJson(jsonFilePath); // 读取 JSON
            JsonToExcel.writeExcel(personList, excelFilePath); // 写入 Excel
            System.out.println("Excel 文件生成成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在这个类中,我们使用刚才实现的 readJsonwriteExcel 方法来完成 JSON 到 Excel 的转换。

ER 图

以下是 JSON 和 Excel 数据之间关系的 ER 图:

erDiagram
    JSON {
        string name
        int age
        string email
    }
    Excel {
        string name
        int age
        string email
    }
    JSON ||--o{ Excel: transforms

状态图

这里是程序状态转换的状态图:

stateDiagram
    [*] --> ReadJSON
    ReadJSON --> ParseJSON : 确认文件存在
    ParseJSON --> GenerateExcel : 解析成功
    GenerateExcel --> [*] : 完成
    GenerateExcel --> [*] : 失败

结尾

通过以上的步骤与示例代码,我们成功实现了将 JSON 数据转换为 Excel 文件。这一过程涵盖了从准备数据开始,到解析 JSON,再到生成 Excel 文件。掌握了这方面的知识后,你将能够处理更多类似的数据转换任务。

希望这篇文章能帮助你在数据处理的路上迈出坚实的一步。如果有任何疑问或需要进一步的解释,欢迎向我询问!