导出数据(把数据通过Map导出)

package com.yu.service.Impl;

import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.yu.entity.AAA;
import com.yu.entity.BBB;
import com.yu.entity.CCC;
import com.yu.mapper.AAAMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.*;

@Service
public class AAAImpl {
    @Autowired
    private AAAMapper aaaMapper;
    public void SelectZhicheng() {
        ExcelWriter writer = ExcelUtil.getWriter("d:/write.xlsx");
        List<AAA> aaa = aaaMapper.aaa();
        List<BBB> bbbs = new ArrayList<>();
        HashMap<String, HashSet<String>> map = new HashMap<>();
        aaa.forEach(t -> {
            if (t.getJobTitle()==null||t.getJobTitle()=="") return;
            List<String> strings = Arrays.asList(t.getJobTitle().split(" "));
            HashSet<String> set = map.get(t.getChainNode());
            if(set!=null)
                set.addAll(strings);
            else {
                HashSet<String> values = new HashSet<>();
                values.addAll(strings);
                map.put(t.getChainNode(),values);
            }
        });
        map.forEach((k, v) -> {
            for (String value : v) {
                System.out.println(k + "---->" + value);
                BBB bbb = new BBB();
                bbb.setShuju(k);
                bbb.setZhuozhe(value);
                bbbs.add(bbb);
            }
        });

        writer.passCurrentRow();

//一次性写出内容,强制输出标题
        writer.write(bbbs,true);
//关闭writer,释放内存
        writer.close();

    }


    public void SelectFangxiang() {
        ExcelWriter writer = ExcelUtil.getWriter("d:/write1.xlsx");
        List<AAA> aaa = aaaMapper.aaa();
        List<CCC> cccs = new ArrayList<>();
        HashMap<String, HashSet<String>> map = new HashMap<>();
        aaa.forEach(t -> {
            if (t.getResearchDirection()==null||t.getResearchDirection()=="") return;
            List<String> strings = Arrays.asList(t.getResearchDirection().split(","));
            HashSet<String> set = map.get(t.getChainNode());
            if(set!=null)
                set.addAll(strings);
            else {
                HashSet<String> values = new HashSet<>();
                values.addAll(strings);
                map.put(t.getChainNode(),values);
            }
        });
        map.forEach((k, v) -> {
            for (String value : v) {
                System.out.println(k + "---->" + value);
                CCC ccc = new CCC();
                ccc.setShuJU(k);
                ccc.setFangXiang(value);
                cccs.add(ccc);
            }
        });

        writer.passCurrentRow();

//一次性写出内容,强制输出标题
        writer.write(cccs,true);
//关闭writer,释放内存
        writer.close();

    }
}

这里写了两个方法 ,只需要看其中一个

首先定义了一个map方法 里面存的是字符串和HasSet

这里的aaa是查到数据库里面的所有值

通过foreach去一条一条的遍历(想清楚 是一条值  一条值的意思是数据库中的一行  也是一条记录的意思)

首先判断你要的空格是空的还是空字符

接下来用spilt()把你的String转化成一个数组并且去除了逗号,再通过Arrays.asList成为一个List集合,把分割出的值放在strings里面

map通过get方法获取了set空间

这时候要判断这个空间中的单元格是否为空,不为空就把所有切割到的值塞进set中

如果为空的话就把切割过的值塞到values,通过map放键和值

这里用set是为了所有放进去的值不重复

下面是做个循环输出,由于writer写出的是个List类型 就创建对象,通过属性分别把键和值塞进去,这样就可以变成List啦  因为java是强类型语言 所以要时刻思考类型的转换
 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值