zoukankan      html  css  js  c++  java
  • 将JSON文件转换为Excel

    package com.duan;
    import cn.afterturn.easypoi.excel.ExcelExportUtil;
    import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    import org.apache.poi.ss.usermodel.Workbook;
    
    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
    import java.io.*;
    import java.util.*;
    
    public class JsonRead {
        private static List<JSONArray> jsonList = new ArrayList<>();
        private static void process(String txtStr)  {
            JSONObject json = JSONObject.fromObject(txtStr);
            JSONArray datas = json.getJSONArray("data");
            jsonList.add(datas);
        }
    
        public static void saveFile(List<JSONArray> l) throws IOException{
            List<Proj> list = new ArrayList<>();
            for (JSONArray datas:l) {
                for (int i = 0; i < datas.size(); i++) {
                    Map<String, Object> map = new HashMap<>();
                    JSONObject obj = datas.getJSONObject(i);
                    String propertyTypes = obj.getString("propertyTypes");
                    String pid = obj.getString("pid");
                    String projName = obj.getString("projName");
                    String saleStatus = obj.getString("saleStatus");
                    String status = obj.getString("status");
    
                    Proj proj = new Proj(propertyTypes, pid, projName, saleStatus, status);
                    list.add(proj);
                }
            }
            Map<String, Object> map = new HashMap<>();
            map.put("list", list);
            String excelName = "/Users/root/Desktop/export/test1.xlsx";    //所需保存的模板文件
            TemplateExportParams params = new TemplateExportParams(excelName);
            Workbook work = ExcelExportUtil.exportExcel(params, map);
            FileOutputStream fos = new FileOutputStream("/Users/root/Desktop/export/test1_map.xlsx"); //所需生成的Excel文件 
            work.write(fos);
            fos.close();
        }
    
        public static void main(String[] args) throws IOException {
            String fileName = "/Users/root/Desktop/未命名文件夹";  //Json文件所在的文件夹路径~
            File file = new File(fileName);		        //获取其file对象
            File[] fs = file.listFiles();
            for (File f: fs
                 ) {
                if(!f.getName().contains("json")){
                    continue;
                }
                BufferedReader bufferedReader = new BufferedReader(new FileReader(f));
                String context = null;
                StringBuilder json = new StringBuilder();
    
                //json内容转化为Map集合通过遍历集合来进行封装
                while ((context = bufferedReader.readLine()) != null) {
                    //Context就是读到的json数据
                    json.append(context);
                }
                String txtStr = json.toString();
                if (txtStr != null) {
                    JSONObject json1 = JSONObject.fromObject(txtStr);
                    JSONArray datas = json1.getJSONArray("data");
                    jsonList.add(datas);
                } else {
                    System.out.println("Read the content is empty!");
                }
            }
            saveFile(jsonList);
        }
    }
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    class Proj{
        String propertyTypes;
        String pid;
        String projName;
        String saleStatus;  //销售状态
        String status;      //是否隐藏状态
    }
    

    1、所需导出的Excel模版文件如图所示:

     2、所需依赖如下,相应版本可根据自己环境而定!!!

    <!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->
            <dependency>
                <groupId>net.sf.json-lib</groupId>
                <artifactId>json-lib</artifactId>
                <version>2.4</version>
                <classifier>jdk15</classifier>
            </dependency>
            <dependency>
                <groupId>cn.afterturn</groupId>
                <artifactId>easypoi-base</artifactId>
                <version>4.1.0</version>
            </dependency>
            <dependency>
                <groupId>cn.afterturn</groupId>
                <artifactId>easypoi-web</artifactId>
                <version>4.1.0</version>
            </dependency>
            <dependency>
                <groupId>cn.afterturn</groupId>
                <artifactId>easypoi-annotation</artifactId>
                <version>4.1.0</version>
            </dependency>
  • 相关阅读:
    .net core 3.1 使用Redis缓存
    JavaSE 高级 第11节 缓冲输入输出字节流
    JavaSE 高级 第10节 字节数组输出流ByteArrayOutputStream
    JavaSE 高级 第09节 字节数组输入流ByteArrayInputStream
    JavaSE 高级 第08节 文件输出流FileOutputStream
    JavaSE 高级 第07节 文件输入流FileInputStream
    JavaSE 高级 第06节 初识I、O流
    JavaSE 高级 第05节 日期类与格式化
    JavaSE 高级 第04节 StringBuffer类
    JavaSE 高级 第03节 Math类与猜数字游戏
  • 原文地址:https://www.cnblogs.com/Duancf/p/14591076.html
Copyright © 2011-2022 走看看