栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java easyExcel动态导出字段

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java easyExcel动态导出字段

java easyExcel动态导出字段
  • java easyExcel动态导出字段
    • 需求根据实体+动态字段导出数据
    • 思路
    • 代码实现

java easyExcel动态导出字段 需求根据实体+动态字段导出数据 思路
1 把实体转成JSON作为接收数据的值
2 把查询的数据转成jsonobject 通过上面的值对应放入List
代码实现
  1. 引入包
		
			com.alibaba
			easyexcel
			2.2.6
		
		
			com.belerweb
			pinyin4j
			2.5.0
		
        
            com.vaadin.external.google
            android-json
            0.0.20131108.vaadin1
            compile
        
  1. 实体
public class ExportEntity {
    private String officeId;
    private String taskId;
    //扩展字段
    private String extend;

    public String getExtend() {
        return extend;
    }

    public void setExtend(String extend) {
        this.extend = extend;
    }

    public String getOfficeId() {
        return officeId;
    }

    public void setOfficeId(String officeId) {
        this.officeId = officeId;
    }

    public String getTaskId() {
        return taskId;
    }

    public void setTaskId(String taskId) {
        this.taskId = taskId;
    }
}

  1. 实现
public class Export{
public void exportExcel() throws JSONException {
        String json = "{"序号":"1","编号":"0001"}";
        //可以通过前端进行参数的传入来确定表头列的数量
        String filedNames = "组织id,任务id";
        String filedCodes = "officeId,taskId";
        List callRecordEntities = getExportEntity();

        List exportCallRecord = Lists.newArrayList();
        //存放头信息
        Map titleMap = new TreeMap();
        Boolean flag = true;
        for(ExportEntity entity:callRecordEntities){
            JSONObject jsonObject = new JSONObject(JsonUtils.objectToJson(entity));
            //1 组装表达头数据  TODO
            if(flag){
                entity.setExtend("{"序号":"1","编号":"0001"}");
                flag =false;
            }else {
                entity.setExtend("{"编号":"0001","上上迁":"666"}");
                flag = true;
            }
            //组装展示数据
            JSONObject hand = new JSONObject(entity.getExtend());
            Iterator sIterator = hand.keys();
            while(sIterator.hasNext()){
                String key = sIterator.next();
                jsonObject.put(ReflectUtils.getPinyin(key),hand.getString(key));
                titleMap.put(ReflectUtils.getPinyin(key),key);
            }
            exportCallRecord.add(jsonObject);
            log.info("OBJECT : " + jsonObject);
        }
        for (Map.Entry entry : titleMap.entrySet()) {
            filedNames=filedNames+","+ entry.getValue();
            filedCodes=filedCodes+","+ entry.getKey();
        }
        
        String[] head = filedNames.split(",");
        List headList = new ArrayList<>(Arrays.asList(head));

        
        File file1 = new File("f:/data");
        if (!file1.exists()) {
            file1.mkdir();
        }
        String[] file = filedCodes.split(",");
        List fileList = new ArrayList<>(Arrays.asList(file));

        ExcelWriter excelWriter = null;
        excelWriter = EasyExcel.write(file1 + "/" + new Date().getTime()+".xls").build();
        //文件导出为.xls文件
        WriteSheet writeSheet0 = EasyExcelUtils.noModelWrite("测试例子", 0,  headList);
        WriteSheet writeSheet1 = EasyExcelUtils.noModelWrite("测试例子1", 1, headList);

        excelWriter.write(EasyExcelUtils.dataListJson(exportCallRecord, fileList), writeSheet0);
        excelWriter.write(EasyExcelUtils.dataListJson(exportCallRecord, fileList), writeSheet1);
        excelWriter.finish();
         }
    private List getExportEntity() {

        List list = Lists.newArrayList();
        for (int i = 0; i < 10; i++) {
            ExportEntity exportEntity = new ExportEntity();
            exportEntity.setOfficeId("officeId"+i);
            exportEntity.setTaskId("taskId"+i);
            list.add(exportEntity);
        }
        return list;
    }
}

  1. utils
public class EasyExcelUtils {
    

    //在导出时注册registerWriteHandler(new CustomCellWriteHandler())
    public static WriteSheet noModelWrite( String sheetName,Integer sheetNo, List headList) {
        //生成sheet
        return EasyExcel.writerSheet(sheetNo, sheetName).head(head(headList)).registerWriteHandler(new CustomCellWriteHandler()).build();

    }

    public static List> dataListJson(List listIn, List fileList) {
        List dataList = listIn;
        List> list = new ArrayList<>();
        try {
            for (JSONObject jSONObject : dataList) {
                List data = new ArrayList<>();
                for (String fieldName : fileList) {
                    Object o = "";
                            try{
                                o =  jSONObject.get(fieldName) == null ? "" : jSONObject.get(fieldName);
                            }catch (Exception e){
                               log.info("dynimicDateIsNull");
                            };
                    data.add(o);
                }
                list.add(data);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
        return list;
    }

}


转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号