Java实战:JSON文件到Excel文件的转换

步骤

  1. 添加依赖

首先,确保你的项目中已经添加了fastjsonpoi的依赖。如果你使用的是Maven,可以在pom.xml中添加以下依赖:

复制代码

xml复制代码

|---|-----------------------------------------------|
| | <!-- fastjson --> |
| | <dependency> |
| | <groupId>com.alibaba</groupId> |
| | <artifactId>fastjson</artifactId> |
| | <version>1.2.78</version> <!-- 请检查最新版本 --> |
| | </dependency> |
| | |
| | <!-- Apache POI --> |
| | <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> |

  1. 解析JSON文件

使用fastjson库来解析JSON文件,并将其转换为Java对象。

  1. 创建Excel文件

使用Apache POI库来创建Excel文件,并将Java对象的数据填充到Excel中。

源代码

假设我们有一个User类,以及一个包含多个User对象的JSON文件。

User.java

复制代码

java复制代码

复制代码
package com.xsz.programmingarsenal.excel.example;

import lombok.Data;

@Data
public class User {
    private String name;
    private int age;
    // getters and setters
}

JsonToExcelConverter.java

复制代码
package com.xsz.programmingarsenal.excel.example;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;

public class JsonToExcelConverter {

    public static void main(String[] args) {
        String jsonFilePath = "C:\\Users\\Brad\\Downloads\\wechatpay-java-main (1)\\ProgrammingArsenal\\src\\main\\resources\\data\\file.json";
        String excelFilePath = "C:\\Users\\Brad\\Downloads\\wechatpay-java-main (1)\\ProgrammingArsenal\\src\\main\\resources\\data\\file.xlsx";
        convertJsonToExcel(jsonFilePath, excelFilePath);
    }

    public static void convertJsonToExcel(String jsonFilePath, String excelFilePath) {
        try {
            // 读取JSON文件
            String jsonContent = new String(Files.readAllBytes(Paths.get(jsonFilePath)));
            JSONArray jsonArray = JSON.parseArray(jsonContent);

            // 创建Excel工作簿和工作表
            Workbook workbook = new XSSFWorkbook();
            Sheet sheet = workbook.createSheet("Users");

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

            // 填充数据
            int rowNum = 1;
            for (Object obj : jsonArray) {
                JSONObject jsonObject = (JSONObject) obj;
                User user = JSON.toJavaObject(jsonObject, User.class);

                Row row = sheet.createRow(rowNum++);
                row.createCell(0).setCellValue(user.getName());
                row.createCell(1).setCellValue(String.valueOf(user.getAge()));
            }

            // 写入Excel文件
            try (FileOutputStream outputStream = new FileOutputStream(excelFilePath)) {
                workbook.write(outputStream);
            }

            System.out.println("Excel file created successfully!");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

注意事项

  • 确保你的JSON文件路径和Excel输出文件路径是正确的。
  • 这个示例假设你的JSON文件是一个数组,其中每个元素都是一个User对象的表示。你需要根据你的实际JSON结构进行调整。
  • 这个示例使用了XSSFWorkbook来创建.xlsx格式的Excel文件。如果你需要创建.xls格式的文件,可以使用HSSFWorkbook
  • 在处理文件和I/O操作时,始终要确保处理可能出现的异常。在这个示例中,我简单地打印了堆栈跟踪,但在实际项目中,你可能需要更复杂的错误处理逻辑。

源码地址:ProgrammingArsenal · bsea/ProgrammingArsenal - 码云 - 开源中国 (gitee.com)

相关推荐
budingxiaomoli2 小时前
Spring IoC &DI
java·spring·ioc·di
Spider Cat 蜘蛛猫2 小时前
Springboot SSO系统设计文档
java·spring boot·后端
未若君雅裁2 小时前
MySQL高可用与扩展-主从复制读写分离分库分表
java·数据库·mysql
学习中.........2 小时前
从扰动函数的变化,感受红黑树带来的性能提升
java
计算机安禾3 小时前
【c++面向对象编程】第24篇:类型转换运算符:自定义隐式转换与explicit
java·c++·算法
Ada大侦探3 小时前
新手小白学习数据分析03----Excel 报表之大厂周报(2026最新版实操,包教包会!)
学习·数据分析·excel
weixin199701080164 小时前
【保姆级教程】淘宝/天猫商品详情 API(item_get)接入指南:Python/Java/PHP 调用示例与 JSON 返回值解析
java·python·php
环流_4 小时前
redis核心数据类型在java中的操作
java·数据库·redis
雨辰AI4 小时前
SpringBoot3 项目国产化改造完整流程|从 MySQL 到人大金仓落地
java·数据库·后端·mysql·政务
带刺的坐椅4 小时前
Java 流程编排新范式 Solon Flow:一个引擎,七种节点,覆盖规则/任务/工作流/AI 编排全场景
java·spring·ai·solon·flow