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>