EasyExcel 在java中实现从数据库导入导出

先引入依赖

<dependencies>
    <!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>easyexcel</artifactId>
        <version>2.1.1</version>
    </dependency>
</dependencies>

导出

@Override
    public void exportDictData(HttpServletResponse response) {
        try {
            //设置下载信息
            response.setContentType("application/vnd.ms-excel");
            response.setCharacterEncoding("utf-8");
            // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
            String fileName = URLEncoder.encode("数据字典", "UTF-8");
            response.setHeader("Content-disposition", "attachment;filename="+ fileName + ".xlsx");

            //查询数据库
            List<Dict> dictList = dictMapper.selectList(null);

            //Dict-->DictEeVo
            List<DictEeVo> dictEeVoList=new ArrayList<>();

            for (Dict dict:dictList){
                DictEeVo dictEeVo=new DictEeVo();
                dictEeVo.setId(dict.getId());
                BeanUtils.copyProperties(dict,dictEeVo);
                dictEeVoList.add(dictEeVo);
            }

            //调用方法进行写操作
            EasyExcel.write(response.getOutputStream(), DictEeVo.class).sheet("数据字典").doWrite(dictEeVoList);
        }catch (IOException e){
            e.printStackTrace();
        }

导入

 @Override
    public void importDictData(MultipartFile file) {
        try {
            EasyExcel.read(file.getInputStream(),DictEeVo.class,new DictListener(dictMapper)).sheet().doRead();
        }catch (IOException e){
            e.printStackTrace();
        }
    }
public class DictListener extends AnalysisEventListener<DictEeVo> {

    private DictMapper dictMapper;

    /**
     * 因为AnalysisEventListener不能被Spring容器管理,所以需要有参构造器注入dictMapper
     * @param dictMapper
     */
    public DictListener(DictMapper dictMapper){
        this.dictMapper=dictMapper;
    }

    /**
     * 一行一行读取
     * @param data
     * @param context
     */
    @Override
    public void invoke(DictEeVo data, AnalysisContext context) {
        //调用方法添加到数据库
        Dict dict=new Dict();
        //DictEeVo->Dict
        BeanUtils.copyProperties(data,dict);
        dictMapper.insert(dict);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值