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对象。
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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/1798.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 系统IO函数之stat、lstat函数

1、stat函数 要点&#xff1a; int stat(const char *pathname, struct stat *statbuf); 作用&#xff1a;查看文件的信息 man 2 stat/return value1、stat结构体&#xff1a; 2、sturct stat 结构体中 st_mode 的含义&#xff08;文件的类型和存取的权限&#xff09;: st_mo…

华媒舍:百度竞价排名如何提升点击率

在网络推广中&#xff0c;提升点击率是十分重要的。运用百度搜索引擎广告是一种常用的提升点击率的形式。而百度竞价推广是搜索引擎所提供的一种付费流量方法&#xff0c;根据提高网站在搜索结果中的排名&#xff0c;可以有效提升点击率。下面我们就详细介绍如何运用百度竞价推…

每日OJ题_其它背包问题①_力扣474. 一和零(二维费用01背包)

目录 力扣474. 一和零 解析代码 代码优化 力扣474. 一和零 474. 一和零 难度 中等 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集的长度&#xff0c;该子集中 最多 有 m 个 0 和 n 个 1 。 如果 x 的所有元素也是 y 的元素&…

【Linux】权限(shell运行原理、概念,Linux权限)

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/qinjh_/category_12625432.html 目录 shell命令以及运行原理 创建和删除用户 创建新普通用户 删除用户 Linux权…

Unity中的UI系统之UGUI

目录 概述UGUI基础——六大基础组件六大基础组件概述Canvas画布组件CanvasScaler画布缩放控制器组件必备知识恒定像素模式缩放模式恒定物理模式3D模式 Graphic Raycaster图形射线投射器EventSystem和Standalone Input ModuleRectTransform UGUI基础——三大基础控件Image图像控…

混淆原理与实践指南

引言 &#x1f680; 在当今的软件开发领域&#xff0c;保护代码的安全性和保密性变得越来越重要。混淆&#xff08;Obfuscation&#xff09;技术作为一种保护代码的手段&#xff0c;在应对逆向工程和代码盗用方面发挥着关键作用。本文将深入探讨混淆的原理&#xff0c;以及如何…

!!!!!文章

我是一名普通本科院校的学生&#xff0c;即将升入大三&#xff0c;接下来的两年&#xff0c;我一定要用心沉淀&#xff0c;踏实前行&#xff0c;为了进入大厂努力付出。 &#xff08;1&#xff09;我的编程目标&#xff1a; 1> 拿到蓝桥杯的国奖&#xff0c;把自己的代码能…

javaWeb项目-财务管理系统功能介绍

项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、SSM、vue、MYSQL、MAVEN 数据库工具&#xff1a;Navicat、SQLyog 1、Springboot框架 …

[lesson45]不同的继承方式

不同的继承方式 不同的继承方式 C中支持三种不同的继承方式 public继承 父类成员在子类中保持原有的访问级别 private继承 父类成员在子类中变为私有成员 protected继承 父类中公有成员变为保护成员&#xff0c;其他成员保持不变 遗憾的事实 一般而言&#xff0c;C工程项目…

镭眸T52激光雷达:无人叉车定位及避障新选择

在传统物料搬运领域&#xff0c;叉车虽扮演了重要角色&#xff0c;但人工操作的局限性——高昂的人力成本、有限的操作效率以及潜在的安全隐患&#xff0c;一直是企业面临的难题。随着劳动力成本的不断攀升&#xff0c;企业对降低成本、提升效率、减少安全事故的需求愈发迫切。…

【iOS开发】(四)react Native第三方组件五个20240419-20

react native 外的 第三方组件 目录标题 react native 外的 第三方组件&#xff08;一&#xff09;与rn核心组件的使用步骤区别&#xff1a;&#xff08;二&#xff09;第三方组件概览1 WebView2 Picker3 Swiper4 AsyncStorage5 Geolocation6 Camera (三)详细学习1 WebViewCoco…

K8s: 集群内Pod通信机制之DNS

集群内Pod通信机制之DNS Kubernetes 支持两种基本的服务发现模式 —— 环境变量和 DNS 1 &#xff09; DNS 概述 可以使用附加组件 为 Kubernetes 集群设置 DNS 服务支持群集的 DNS 服务器&#xff08;例如 CoreDNS&#xff09;监视 Kubernetes API 中的新服务&#xff0c;并…

Navicat 干货 | 掌握 PostgreSQL 规则语法

PostgreSQL 规则提供了一种强大的机制&#xff0c;控制查询执行并在数据库内部实施数据操作。理解规则的语法和用法对于有效利用其功能至关重要。在上周的文章中&#xff0c;我们探讨了 PostgreSQL 规则的工作原理及其与触发器的区别。今天的文章将使用免费的 “dvdrental”示例…

程序员35岁会失业吗?针对中年危机的5种解决方案

在程序员的职业生涯中&#xff0c;35岁被许多人认为是一道重要的分水岭。这个年龄被赋予了特殊的意义&#xff0c;因为在这个年龄段&#xff0c;许多程序员开始对自身的职业发展进行反思和重新定位。一方面&#xff0c;随着科技的飞速发展&#xff0c;新的编程语言和技术层出不…

3.AlexNet--CNN经典网络模型详解(pytorch实现)

看博客AlexNet--CNN经典网络模型详解&#xff08;pytorch实现&#xff09;_alex的cnn-CSDN博客&#xff0c;该博客的作者写的很详细&#xff0c;是一个简单的目标分类的代码&#xff0c;可以通过该代码深入了解目标检测的简单框架。在这里不作详细的赘述&#xff0c;如果想更深…

如何使用rdtsc和C/C++来测量运行时间(如何使用内联汇编和获取CPU的TSC时钟频率)

本文主要是一个实验和思维扩展&#xff0c;除非你有特殊用途&#xff0c;不然不要使用汇编指令来实现这个功能。扩展阅读就列出了一些不需要内联汇编实现的 写本文是因为为了《Windows上的类似clock_gettime(CLOCK_MONOTONIC)的高精度测量时间函数》这篇文章找资料的时候&…

不同版本vue安装vue-router

vue-router 是vue官网发布的一个插件库&#xff0c;单页面路由。vue 和 vue-router 之间版本也需要对应。 vue2.x版本使用vue-router3.x版本&#xff0c;vue3.x使用vue-router4.x版本&#xff0c;根据自己的需要选择合适的版本 1、可以在安装前查看vue-router版本&#xff0c;…

说一说什么是并发队列,并发队列和并发集合的区别是什么

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:并发队列和并发集合,以及他们的区别 并发队列是一种特殊的队列数据结构,它能够支持多个线程同时对队列进行操作,包括插入和删除操作,而不需要…

陈奂仁联手 The Sandbox 推出“Hamsterz Doodles”人物化身系列

全新人物化身系列结合艺术与实用性 开创元宇宙新篇章 著名亚洲唱作歌手兼香港电影金像奖得主陈奂仁携手 The Sandbox&#xff0c;兴奋地宣布推出新的元宇宙人物化身系列 —— Hamsterz Doodles 仓鼠涂鸦。 陈奂仁在 The Sandbox 推出 Hamsterz Doodles 系列&#xff0c;将艺术与…

波士顿动力抛弃液压机器人Atlas,推出全新电动化机器人,动作超灵活

本周&#xff0c;机器人科技巨头波士顿动力宣布液压Atlas退役&#xff0c;并推出了下一代产品——专为实际应用而设计的全电动Atlas机器人&#xff0c;这也意味着人形机器人迈出了商业化的第一步。 Atlas——人形机器人鼻祖 Atlas&#xff08;阿特拉斯&#xff09;这个名字最…