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>
原文:https://www.cnblogs.com/Duancf/p/14591076.html