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


    步骤

    1. 添加依赖

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

     
    

    xml复制代码

    com.alibaba
    fastjson
    1.2.78
    org.apache.poi
    poi
    5.0.0
    org.apache.poi
    poi-ooxml
    5.0.0
    1. 解析JSON文件

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

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

    源代码

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

    User.java

     
    

    java复制代码

    1. package com.xsz.programmingarsenal.excel.example;
    2. import lombok.Data;
    3. @Data
    4. public class User {
    5. private String name;
    6. private int age;
    7. // getters and setters
    8. }

    JsonToExcelConverter.java

    1. package com.xsz.programmingarsenal.excel.example;
    2. import com.alibaba.fastjson.JSON;
    3. import com.alibaba.fastjson.JSONArray;
    4. import com.alibaba.fastjson.JSONObject;
    5. import org.apache.poi.ss.usermodel.*;
    6. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    7. import java.io.*;
    8. import java.nio.file.Files;
    9. import java.nio.file.Paths;
    10. import java.util.List;
    11. public class JsonToExcelConverter {
    12. public static void main(String[] args) {
    13. String jsonFilePath = "C:\\Users\\Brad\\Downloads\\wechatpay-java-main (1)\\ProgrammingArsenal\\src\\main\\resources\\data\\file.json";
    14. String excelFilePath = "C:\\Users\\Brad\\Downloads\\wechatpay-java-main (1)\\ProgrammingArsenal\\src\\main\\resources\\data\\file.xlsx";
    15. convertJsonToExcel(jsonFilePath, excelFilePath);
    16. }
    17. public static void convertJsonToExcel(String jsonFilePath, String excelFilePath) {
    18. try {
    19. // 读取JSON文件
    20. String jsonContent = new String(Files.readAllBytes(Paths.get(jsonFilePath)));
    21. JSONArray jsonArray = JSON.parseArray(jsonContent);
    22. // 创建Excel工作簿和工作表
    23. Workbook workbook = new XSSFWorkbook();
    24. Sheet sheet = workbook.createSheet("Users");
    25. // 创建表头
    26. Row headerRow = sheet.createRow(0);
    27. headerRow.createCell(0).setCellValue("Name");
    28. headerRow.createCell(1).setCellValue("Age");
    29. // 填充数据
    30. int rowNum = 1;
    31. for (Object obj : jsonArray) {
    32. JSONObject jsonObject = (JSONObject) obj;
    33. User user = JSON.toJavaObject(jsonObject, User.class);
    34. Row row = sheet.createRow(rowNum++);
    35. row.createCell(0).setCellValue(user.getName());
    36. row.createCell(1).setCellValue(String.valueOf(user.getAge()));
    37. }
    38. // 写入Excel文件
    39. try (FileOutputStream outputStream = new FileOutputStream(excelFilePath)) {
    40. workbook.write(outputStream);
    41. }
    42. System.out.println("Excel file created successfully!");
    43. } catch (IOException e) {
    44. e.printStackTrace();
    45. }
    46. }
    47. }


    注意事项

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

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

  • 相关阅读:
    阿里云服务器基础linux指令实验(一到五)
    并发编程day04
    MyBatis学习:按照位置传递参数
    使用tkinter开发GUI程序4 -- tkinter常见控件的特征属性(第二部分)
    《德米安》从那以后伤口很痛,但偶尔我会找到钥匙,沉入心底
    LeetCode 0485. 最大连续 1 的个数
    Flutter | 使用 typedef 让回调更优雅
    【SpringCloud】服务注册与发现(01)-Eureka
    【linux学习】管道符,重定向与环境变量
    【Nginx24】Nginx学习:压缩模块Gzip
  • 原文地址:https://blog.csdn.net/h356363/article/details/138092018