将本地json文件转为excel文档

public class FileTest {
    public static void jsonToExcel(String fileName, JSONObject jsonObject, String[] ArrayKeys) throws Exception {
        // 创建HSSFWorkbook对象
        HSSFWorkbook wb = new HSSFWorkbook();

        // 多个数组的建成多个sheet
        for (String arrayKey : ArrayKeys) {
            // 创建HSSFSheet对象
            HSSFSheet sheet = wb.createSheet(ArrayKeys.length > 1 ? arrayKey : "sheet");
            Set keys = null;
            int rowNo = 0;
            HSSFRow row = sheet.createRow(0);
            JSONArray jsonArray = jsonObject.getJSONArray(arrayKey);

            //如果为空不加这个if会报空指针,这样为空的话会自动跳过数据为空的sheet表
            if (jsonArray !=null ) {
                //获取标题
                for (int i = 0; i < jsonArray.size(); i++) {
                    if (keys == null) {
                        JSONObject item = jsonArray.getJSONObject(i);
                        keys = item.keySet();
                        for (Object s : keys) {
                            HSSFCell cell = row.createCell(rowNo++);
                            cell.setCellValue(s.toString());
                        }
                    } else {
                        break;
                    }
                }
                // 获取数据一次循环一行
                for (int i = 0; i < jsonArray.size(); i++) {
                    rowNo = 0;
                    JSONObject item = jsonArray.getJSONObject(i);
                    row = sheet.createRow(i + 1);
                    keys = item.keySet();
                    for (Object s : keys) {
                        HSSFCell cell = row.createCell(rowNo++);
                        cell.setCellValue(item.getString(s.toString()));
                    }
                }
            }
        }
        // 创建Excel文件
        File file = new File(fileName);
        file.createNewFile();
        // 输出到Excel文件
        FileOutputStream output = new FileOutputStream(fileName);
        wb.write(output);

        wb.close();
        output.flush();
        output.close();
    }

    public static void main(String[] args) throws Exception {


        String ret = "";

        //读取本地json文件
        String filePath = "";
        // 创建一个文件对象
        File file = new File(filePath);
        try {
            // 创建一个FileReader对象
            FileReader fileReader = new FileReader(file);

            if (file.exists()) {
                // 创建一个BufferedReader对象
                BufferedReader reader = new BufferedReader(fileReader);

                // 创建一个字符串变量用于存储文件内容
                String line;
                StringBuilder content = new StringBuilder();

                // 逐行读取文件内容
                while ((line = reader.readLine()) != null) {
                    content.append(line).append("\n");
                }

                ret = content.toString();
            } else {
                System.out.println("文件不存在");
            }

            // 关闭文件
            fileReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 替换表头
        String replace = ret.replaceAll("nsrsbh", "nsrsbh")


                //可以设置所有sheet中的表头名(不要重复,重复可能会导致数据错误)
                .replaceAll("ssqjz", "ssqjz")
                .replaceAll("wfss", "wfss")
                .replaceAll("clcfsj", "clcfsj")

                // 也可以把JSON数组的节点名称替换掉,这样sheet页的名称也替换成了想要的文字(第一个参数为json字段名,第二个为sheet表名)
                .replaceAll("qyxxList", "sheet1")
                .replaceAll("qyxxList", "sheet2");
        ;
        

        JSONObject jsonObject = JSONObject.parseObject(replace, Feature.OrderedField);

        // 设置数组的节点名称
        String[]ArrayKeys = new String[]{"sheet1","sheet2"};//可设多个
        // 设置生成的文件名及路径
        String fileName = "生成文件名及地址(需要提前创建好)";

        // 调用转换方法
        jsonToExcel(fileName, jsonObject, ArrayKeys);

        System.out.println("生成文件成功:"+fileName);
    }

}
  • 24
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值