Java中将Excel转换为JSON的方法

在当今的软件开发中,数据交换格式多种多样,其中JSON和Excel是两种常见的数据格式。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。Excel是一种电子表格格式,广泛用于存储和处理表格数据。有时候,我们需要将Excel中的数据转换为JSON格式,以便于后续的数据处理和分析。本文将介绍在Java中实现Excel到JSON转换的方法。

旅行图:Excel到JSON的转换流程

首先,我们通过一个旅行图来展示Excel到JSON的转换流程:

journey
    title Excel to JSON Conversion Process
    section 读取Excel文件
      step1: 读取Excel文件
      Step1: 选择Excel文件
      Step1: 读取Excel文件内容
    section 解析Excel数据
      step2: 解析Excel数据
      Step2: 将Excel数据转换为Java对象
    section 转换为JSON
      step3: 转换为JSON
      Step3: 将Java对象转换为JSON格式
    section 输出JSON文件
      step4: 输出JSON文件
      Step4: 将JSON数据写入文件

准备工作

在开始编写代码之前,我们需要添加一些必要的依赖库。这里我们使用Apache POI来读取Excel文件,使用Jackson库来将Java对象转换为JSON。

  1. 添加Apache POI依赖:
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.3</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.3</version>
</dependency>
  1. 添加Jackson依赖:
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.14.0</version>
</dependency>

代码实现

1. 读取Excel文件

我们首先需要读取Excel文件,这里以读取一个包含用户信息的Excel文件为例:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

public class ExcelToJsonConverter {

    public static List<User> readExcel(String filePath) throws Exception {
        List<User> users = new ArrayList<>();
        try (InputStream inputStream = new FileInputStream(filePath)) {
            Workbook workbook = new XSSFWorkbook(inputStream);
            Sheet sheet = workbook.getSheetAt(0);
            for (Row row : sheet) {
                if (row.getRowNum() == 0) {
                    continue; // 跳过标题行
                }
                User user = new User();
                user.setId((int) row.getCell(0).getNumericCellValue());
                user.setName(row.getCell(1).getStringCellValue());
                user.setAge((int) row.getCell(2).getNumericCellValue());
                users.add(user);
            }
        }
        return users;
    }
}

2. 将Java对象转换为JSON

接下来,我们使用Jackson库将Java对象转换为JSON格式:

import com.fasterxml.jackson.databind.ObjectMapper;

public class ExcelToJsonConverter {

    public static String convertToJson(List<User> users) throws Exception {
        ObjectMapper mapper = new ObjectMapper();
        return mapper.writeValueAsString(users);
    }
}

3. 输出JSON文件

最后,我们将转换后的JSON数据写入到一个文件中:

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class ExcelToJsonConverter {

    public static void writeJsonToFile(String json, String outputPath) throws IOException {
        try (FileWriter fileWriter = new FileWriter(new File(outputPath))) {
            fileWriter.write(json);
        }
    }
}

4. 整合代码

将上述代码整合到一个主函数中,实现Excel到JSON的转换:

public class Main {
    public static void main(String[] args) {
        try {
            String excelFilePath = "path/to/excel/file.xlsx";
            String jsonOutputPath = "path/to/output/json/file.json";

            List<User> users = ExcelToJsonConverter.readExcel(excelFilePath);
            String json = ExcelToJsonConverter.convertToJson(users);
            ExcelToJsonConverter.writeJsonToFile(json, jsonOutputPath);

            System.out.println("Excel to JSON conversion completed successfully.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

关系图:Excel和JSON