主要思路:使用bean存放从接口取到的数据,把组装的数据根据hutool官方提供的写入方法(bean写入方式)写入到excel中,并设置一定的样式。
目录
1、写excel文件主方法
2、组装写入的数据集合
3、接收API返回的bean类
4、输出结果
1、写excel文件主方法
String tempFile = "xxx/xxxx/xxxx/xxxx.xlsx";
ExcelWriter writer = new ExcelWriter(tempFile, "sheet的名字");
//自定义标题别名
writer.addHeaderAlias("id", "序号");
writer.addHeaderAlias("orgName", "名称");
writer.addHeaderAlias("dirNums", "总数");
writer.addHeaderAlias("unSetDirNums", "目录数1");
writer.addHeaderAlias("setDirNums", "目录数2");
writer.addHeaderAlias("resNums", "资源数");
writer.addHeaderAlias("kbResNums", "表数");
//默认的,未添加alias的属性也会写出,如果想只写出加了别名的字段,可以调用此方法排除之
writer.setOnlyAlias(true);
//设置列宽
writer.setColumnWidth(1, 16);
writer.setColumnWidth(3, 15);
writer.setColumnWidth(4, 15);
//合并单元格后的标题行,使用默认标题样式
writer.merge(10, "XXXXX统计表头名称");
//设置字体
Font headFont = writer.createFont();
headFont.setBold(true);
headFont.setFontName("宋体");
writer.getStyleSet().setFont(headFont, false);
//writer.getStyleSet().setBackgroundColor(IndexedColors.LIGHT_GREEN, true);
//一次性写出内容,使用默认样式,强制输出标题
writer.write(makeShizhouArray(), true);
Font bodyFont = writer.createFont();
bodyFont.setBold(false);
bodyFont.setFontName("宋体");
writer.getStyleSet().setFont(bodyFont, true);
//writer.getStyleSet().setBackgroundColor(IndexedColors.AUTOMATIC, false);
//关闭writer
writer.close();
2、组装写入的数据集合
ArrayList<DataModel> makeShizhouArray(){
String shizhou = HttpUtil.get("某一个接口的请求地址,返回的是JSON数据");
//接口结果转json
JSONArray shizhouJson = JSONArray.parseArray(shizhou);
ArrayList<DataModel> szRows = new ArrayList<DataModel>();
for(int i=0;i<shizhouJson.size();i++) {
JSONObject eachObj = shizhouJson.getJSONObject(i);
String group_name = eachObj.get("group_name").toString();//名称
String api_amount = eachObj.get("api_amount").toString();//接口
//....获取到所有需要的字段值,然后填充到bean里面去
DataModel row1 = new DataModel();
row1.setId(i+1);
row1.setOrgName(group_name);
//...放到list中
szRows.add(row1);
}
return szRows;
}
3、接收API返回的bean类
import lombok.Data;
@Data
public class DataModel {
/**序号*/
Integer id;
/**名称*/
String orgName;
/**目录数*/
Integer dirNums;
/**目录数1*/
Integer jcDirNums;
/**目录数2*/
Integer ztDirNums;
/**目录数3*/
Integer bmDirNums;
/**目录数4*/
//...其他字段
}
4、输出结果
?
|