作为是个测试自动化专家,请帮我写一个由excel转json的java代码实例

当将Excel数据转换为JSON格式时,你可以使用Apache POI库来读取Excel文件,并使用JSON库(如Gson或Jackson)来将读取的数据转换为JSON格式。下面是一个示例代码,演示了如何实现这个过程:

import com.google.gson.Gson;
import org.apache.poi.ss.usermodel.*;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ExcelToJsonConverter {

    public static void main(String[] args) {
        String excelFilePath = "path/to/excel.xlsx";
        String jsonFilePath = "path/to/output.json";

        List<Map<String, String>> data = readExcel(excelFilePath);
        String json = convertToJson(data);

        // 将JSON写入文件
        // ...
    }

    private static List<Map<String, String>> readExcel(String filePath) {
        List<Map<String, String>> data = new ArrayList<>();

        try (FileInputStream fis = new FileInputStream(new File(filePath));
             Workbook workbook = WorkbookFactory.create(fis)) {

            Sheet sheet = workbook.getSheetAt(0);
            Row headerRow = sheet.getRow(0);

            int columnCount = headerRow.getLastCellNum();

            for (int i = 1; i <= sheet.getLastRowNum(); i++) {
                Row row = sheet.getRow(i);
                Map<String, String> rowData = new HashMap<>();

                for (int j = 0; j < columnCount; j++) {
                    Cell cell = row.getCell(j);
                    String header = headerRow.getCell(j).getStringCellValue();
                    String value = "";

                    if (cell != null) {
                        switch (cell.getCellType()) {
                            case STRING:
                                value = cell.getStringCellValue();
                                break;
                            case NUMERIC:
                                value = String.valueOf(cell.getNumericCellValue());
                                break;
                            case BOOLEAN:
                                value = String.valueOf(cell.getBooleanCellValue());
                                break;
                            case FORMULA:
                                value = cell.getCellFormula();
                                break;
                            // 处理其他类型的单元格
                        }
                    }
                    
                    rowData.put(header, value);
                }

                data.add(rowData);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }

        return data;
    }

    private static String convertToJson(List<Map<String, String>> data) {
        Gson gson = new Gson();
        return gson.toJson(data);
    }
}

上述代码中,readExcel()方法用于读取Excel文件并将数据存储在一个List<Map<String, String>>中。通过遍历每个单元格并根据其类型获取相应的值,并将每一行数据作为一个Map存储,然后将所有行的数据存储在列表中。

convertToJson()方法使用Gson库将读取的数据转换为JSON格式字符串。你可以自行导入Gson库,并调用toJson()方法将List<Map<String, String>>转换为JSON字符串。

请将代码中的"path/to/excel.xlsx""path/to/output.json"替换为相应的实际路径,然后根据你的需求进行调整和扩展。

希望这个例子能帮到你!如果你还有其他问题,请随时提问。