EasyExcel不使用实体类导出,数据行数没问题,但是内容不显示!!!

Collection<Map<Integer, Object>> dataMaps = InfluxdbClient.ToListMapCSV(query);
        ArrayList<Map<Integer, Object>> list = new ArrayList<>(dataMaps);

        ExcelWriter excelWriter = EasyExcel.write("E:/zgzk/xm/niml_recas/file/csv/file.csv").build();
        List<String> headL = new ArrayList<>();
        headL.add("time");
        headL.add("I");
        headL.add("V");
        headL.add("AP");
        headL.add("IQ");
        List<List<String>> headList = new ArrayList<>();
        for(String h: headL){
            List<String> list1 = new ArrayList<>();
            list1.add(h);
            headList.add(list1);
        }

        doUpdate2(0,headList,list,excelWriter,"ccc");
        excelWriter.finish();

    }
    private void doUpdate2(int index, List<List<String>> headList , List list, ExcelWriter excelWriter,String sheetName){
        if(list.size()>0){
            WriteSheet writesheet = EasyExcel.writerSheet(index, sheetName).head(headList).build();
            excelWriter.write(list,writesheet);
        }
    }
public static Collection<Map<Integer, Object>> ToListMapCSV(List<FluxTable> tableList){
        // 使用自定义格式进行格式化
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
                .withZone(ZoneOffset.of("+08:00"));
        Map<String,Map<Integer,Object>> resMap = new LinkedHashMap<>();
        for (FluxTable table : tableList) {
            List<FluxRecord> records = table.getRecords();
            for (FluxRecord record : records) {
                Instant time = record.getTime();
                ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(time,ZoneOffset.of("+08:00"));
                String timeStr = formatter.format(zonedDateTime);
                Map<Integer,Object> map = resMap.get(timeStr);
                Integer index = 0;
                switch (record.getField()){
                    case "I":
                        index = 1;
                        break;
                    case "V":
                        index = 2;
                        break;
                    case "AP":
                        index = 3;
                        break;
                    case "IQ":
                        index = 4;
                        break;
                }
                if(map==null){
                    map = new HashMap<>();
//                    map.put(record.getField(),record.getValue());
                    map.put(index,record.getValue());
                    resMap.put(timeStr,map);
                }else{
                    map.put(index,record.getValue());
                }

                if (!map.containsKey("time")){
                    map.put(0,timeStr);
                }
            }
        }

        Collection<Map<Integer, Object>> values = resMap.values();

        return values;
    }

主要是因为Map中的key之前没有设置为Integer类型,这个key应该对应的是列数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值