步骤
- 添加依赖
首先,确保你的项目中已经添加了fastjson
和poi
的依赖。如果你使用的是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> |
- 解析JSON文件
使用fastjson
库来解析JSON文件,并将其转换为Java对象。
3. 创建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)