基于Java实现Json文件转换为Excel文件

基于Java实现Json文件转换为Excel文件的攻略:

  1. 引入相关依赖
    在pom.xml文件中添加以下依赖:
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.2</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.1.2</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.78</version>
</dependency>
  1. 编写转换逻辑
  2. 读取Json文件数据,使用fastjson库将Json数据转换为Java对象。
  3. 创建Excel工作簿和工作表,并设置表头信息。
  4. 遍历Java对象集合,将数据写入Excel中。
  5. 将Excel写入输出流并写入文件。

示例1:将Json文件中的数据转换为Excel文件并保存在本地。

假设Json文件内容为:

[
  {
    "name": "Alice",
    "age": 20,
    "gender": "female"
  },
  {
    "name": "Bob",
    "age": 25,
    "gender": "male"
  }
]

Java代码如下:

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;

public class JsonToExcelConverter {

    public static void main(String[] args) throws IOException {
        // 读取Json文件内容到字符串中
        String jsonStr = Files.readString(Paths.get("data.json"), StandardCharsets.UTF_8);
        // 将Json字符串转换为Java对象集合
        JSONArray jsonArray = JSONArray.parseArray(jsonStr);

        // 创建Excel工作簿和工作表
        XSSFWorkbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet();
        int rowIndex = 0;
        // 设置表头信息
        Row header = sheet.createRow(rowIndex++);
        header.createCell(0).setCellValue("姓名");
        header.createCell(1).setCellValue("年龄");
        header.createCell(2).setCellValue("性别");

        // 遍历Json对象集合,将数据写入Excel中
        for (int i = 0; i < jsonArray.size(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            Row row = sheet.createRow(rowIndex++);
            Cell cell0 = row.createCell(0);
            cell0.setCellValue(jsonObject.getString("name"));
            Cell cell1 = row.createCell(1);
            cell1.setCellValue(jsonObject.getIntValue("age"));
            Cell cell2 = row.createCell(2);
            cell2.setCellValue(jsonObject.getString("gender"));
        }

        // 将Excel写入输出流并写入文件
        try (FileOutputStream outputStream = new FileOutputStream("data.xlsx")) {
            workbook.write(outputStream);
        }
    }
}

示例2:将从API接口获取的Json数据转换为Excel文件并保存在本地。

假设API接口地址为:http://example.com/data

Java代码如下:

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class JsonToExcelConverter {

    public static void main(String[] args) throws IOException {
        // 从API接口获取Json数据
        URL url = new URL("http://example.com/data");
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");
        connection.connect();
        InputStream inputStream = connection.getInputStream();
        byte[] data = inputStream.readAllBytes();
        String jsonStr = new String(data);
        // 将Json字符串转换为Java对象集合
        JSONArray jsonArray = JSONArray.parseArray(jsonStr);

        // 创建Excel工作簿和工作表
        XSSFWorkbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet();
        int rowIndex = 0;
        // 设置表头信息
        Row header = sheet.createRow(rowIndex++);
        header.createCell(0).setCellValue("姓名");
        header.createCell(1).setCellValue("年龄");
        header.createCell(2).setCellValue("性别");

        // 遍历Json对象集合,将数据写入Excel中
        for (int i = 0; i < jsonArray.size(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            Row row = sheet.createRow(rowIndex++);
            Cell cell0 = row.createCell(0);
            cell0.setCellValue(jsonObject.getString("name"));
            Cell cell1 = row.createCell(1);
            cell1.setCellValue(jsonObject.getIntValue("age"));
            Cell cell2 = row.createCell(2);
            cell2.setCellValue(jsonObject.getString("gender"));
        }

        // 将Excel写入输出流并写入文件
        try (FileOutputStream outputStream = new FileOutputStream("data.xlsx")) {
            workbook.write(outputStream);
        }
    }
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于Java实现Json文件转换为Excel文件 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C C++ 题解LeetCode1417重新格式化字符串

    C/C++ 题解 LeetCode 1417 重新格式化字符串 题目描述 给定一个由字母、数字和空格组成的字符串 s,你需要将其重新格式化,使得任意两个相邻字符之间都有且仅有一个空格,并且首尾字符之间也不能有空格。 返回 重新格式化后的字符串,如果无法按要求重新格式化,则返回一个 空字符串。 示例说明 示例 1 输入:s = “a0b1c2″输出:”a 0b…

    C 2023年5月24日
    00
  • Swift如何调用Objective-C的可变参数函数详解

    那么首先我们需要了解的是Objective-C中的可变参数函数的使用方式和Swift对其的调用方式。 在Objective-C中,可变参数函数通常使用va_list和va_start、va_arg、va_end等宏来进行参数的处理。其中 va_start宏接受可变参数函数的参数列表以及可变参数的最后一个非变长参数,在获取可变参数时,需要使用 va_arg宏进…

    C 2023年5月23日
    00
  • C++ 中的类型详细

    C++ 中的类型详细 数据类型的定义 在C++中,常用的数据类型包括: 基本类型:整型、字符型、布尔类型、浮点型等。 构造类型:数组、结构体、联合体、枚举等。 指针类型:指向其他变量的指针。 引用类型:引用是某个变量的别名。 类类型:类是一个自定义的数据类型,可以包含属性和方法。 基本数据类型 C++中的基本数据类型包括:整型、浮点型、字符型、布尔类型等。 …

    C 2023年5月22日
    00
  • C++计数排序详解

    C++计数排序详解 什么是计数排序? 计数排序是一种非比较型排序算法,它的基本思想是统计所有元素的出现次数,然后根据每个元素的出现次数,依次将这些元素放入数组中,从而得到排好序的数组。 计数排序的基本原理 计数排序利用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素个数。然后根据数组C来将A中的元素排到正确的位置。例如,如果C[3]=4,那么值…

    C 2023年5月22日
    00
  • C程序 用函数显示两个区间的素数

    下面是“C程序 用函数显示两个区间的素数”的完整使用攻略。 1.功能介绍 此程序通过定义一个函数来显示两个区间内的素数。输入两个整数,程序将找到这两个整数之间所有的素数,并显示出来。 2. 使用方法 2.1 下载程序 将程序的代码复制到你的集成开发环境(IDE)中,并保存到c文件中,例如:prime_numbers.c 2.2 定义输入 在程序的main函数…

    C 2023年5月9日
    00
  • 利用C语言实现猜数字小游戏

    下面是利用C语言实现猜数字小游戏的完整攻略: 步骤一:程序基本结构的搭建 我们可以先编写一个基本的程序框架,包含头文件、全局变量、函数声明等部分。具体代码如下: #include <stdio.h> #include <stdlib.h> #include <time.h> int secret_number; // 定义…

    C 2023年5月23日
    00
  • 深入解析C++中的指针数组与指向指针的指针

    深入解析C++中的指针数组与指向指针的指针 指针数组 指针数组是指以数组形式存储的指针的集合。其语法格式为: type* array_name[size]; type为指针所指向的类型,array_name为数组的名称,size为数组的大小。其中,*表示指针运算符。指针数组定义完成后,可以通过下标的方式对其进行操作。 以下是一个示例,展示如何定义和使用指针数…

    C 2023年5月23日
    00
  • c++实现值机系统

    C++实现值机系统攻略 1. 确定需求 在实现值机系统之前,我们需要确定需求,具体包括以下几个方面: 登记航班信息,包括航班号、起飞时间、到达时间、起飞机场、到达机场、预计飞行时间等。 登记乘客信息,包括乘客姓名、证件类型、证件号码、航班号、座位号等。 实现在线值机功能,可以选择座位、打印登机牌等。 实现退改签功能,可以修改预定信息或取消预定。 实现管理员功…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部