easyexcel,百度搜索即可。导入与导出其实就是Java代码与数据库的操作。

一、数据导出

1. 首先添加依赖

<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.0</version>
</dependency>

2. 在实体类中添加注解,表示导出后变量所对应的注解

/*** 职位*/@ExcelProperty("职位名称")private String name;

3. 编写接口

@GetMapping("/export")public void exportData(HttpServletResponse response) throws IOException {//查询到所有数据List<Position> list = positionService.list();// 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postmanresponse.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");response.setCharacterEncoding("utf-8");// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系String fileName = URLEncoder.encode("职位列表", "UTF-8").replaceAll("\\+", "%20");response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");EasyExcel.write(response.getOutputStream(), Position.class).sheet("职位列表").doWrite(list);}

4. 前端调用接口即可完成导出,下面是前端的一个点击时间

exportData() {//表示在浏览器的空白窗口打开一个连接window.open("/system/basic/position/export", "_blank");
},

二、数据导入

前端有 组件 | Element  提供的样式,搜索 上传 即可

1. 编写监听器

读Excel · 语雀 (yuque.com)   搜索监听器即可查看案例代码

我的代码如下

package com.qfedu.vhr.system.excel;import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.qfedu.vhr.system.entity.Position;
import com.qfedu.vhr.system.service.IPositionService;import java.util.ArrayList;
import java.util.List;public class PositionExcelListener implements ReadListener<Position> {IPositionService positionService;public PositionExcelListener(IPositionService positionService) {this.positionService = positionService;}List<Position> positions = new ArrayList<>();/*** 每解析一行数据,这个方法就会被触发* @param position* @param analysisContext*/@Overridepublic void invoke(Position position, AnalysisContext analysisContext) {//因为字段 id 是主键position.setId(null);//把处理好到一行数据添加到集合中暂存一下,批处理需要在 url 中添加参数 jdbc:mysql:///vhr?serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true,useSSL=false,低版本数据库使用高版本 connector 时添加positions.add(position);}/*** 整个 excel 被读完的时候,会触发* @param analysisContext*/@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {//当读取完的时候,就项数据库中批量插入positionService.saveBatch(positions);}
}

2. 编写接口

@PostMapping("/import")public RespBean importData(MultipartFile file) {//MultipartFile 表示上传的是一个文件try {EasyExcel.read(file.getInputStream(), Position.class, new PositionExcelListener(positionService)).sheet().doRead();return RespBean.ok("上传成功");} catch (IOException e) {e.printStackTrace();}return RespBean.error("上传失败");

3. 如果 mybatis 出错了,可以打印一下日志

logging:level:com.qfedu.vhr.system.mapper: debugorg.mybatis: debug

web中的数据导入与导出相关推荐

  1. GEE系列:第4单元 Google 地球引擎中的数据导入和导出

    GEE从入门到实战的10个系列单元: GEE系列:第1单元 Google地球引擎简介 GEE系列:第2单元 探索数据集 GEE系列:​第3单元 栅格遥感影像波段特征及渲染可视化 GEE系列:第4单元 ...

  2. matlab中的数据导入和导出

    在编写一个程序时,经常需要从外部读入数据,或者将程序运行的结果保存为文件.MATLAB使用多种格式打开和保存数据.本章将要介绍 MATLAB中文件的读写和数据的导入导出. 13.1  数据基本操作 本 ...

  3. 第二节 MATLAB中图像数据导入、导出和转换

    图像数据的导入和导出,图像类型和类的转换 MATLAB® 中的基本数据结构体(数组)天然适合表示图像.使用工具箱函数,您可以从支持的图形文件或科学文件格式将图像数据导入工作区.反过来,您也可以将数据从 ...

  4. java导出csv文件_R语言数据导入与导出

    R语言数据导入与导出 整这么一个系列,还是因为学R语言时遇到过一个非常"小白友好"的网站"DataScience Made Simple".相信很多人搜到过这个 ...

  5. oracle数据泵导入导出_【软件】R语言数据导入与导出

    "R语言导入文本和xlsx文件数据的方法,以及数据与图片的输出" 许多数据往往保存在TXT文件或Excel文件中,该如何将这些文件导入R语言进行分析呢?另外,使用R语言处理完数据之 ...

  6. 【clickhouse】使用waterdrop将Hive中的数据导入ClickHouse

    1.概述 转载:使用waterdrop将Hive中的数据导入ClickHouse 这里仅仅自己学习用. 前言 最近有一个需求需要把hive的数据同步到clickhouse,而且数据量还比较大,所以使用 ...

  7. csv导入pgsql不成功_数据科学 | pandas数据导入与导出

    ↑↑↑↑↑点击上方蓝色字关注我们! 『运筹OR帷幄』原创 作者:杨士锦 周岩 书生 编者按 当我们开始着手做一个数据分析项目时,选择和导入数据集是第一个步骤,而导出数据虽然非必需,但有时候我们也需要保 ...

  8. 如何在ex表格导入php_怎么使用php把表格中的数据导入到excel中,php如何快速导入excel表格数据...

    php怎么导入大量数据的excel php导出数据的Excel: PHP从数据库分多次读取100万行记录,和分将100万入文本文件都没问题 Excel可以支100万行记录,Excel 2003最大支持 ...

  9. lisp倒入excel数据画图_如何将EXCEL中的数据导入到CAD中,绘制成曲线|

    如何将EXCEL中的数据导入到CAD中,绘制成曲线 如果不用软件,只用CAD自身功能的话可以通过多段线生成你需要的曲线.你给出你的曲线函数,我给你生成曲线坐标以及CAD能自动绘制的文件格式 怎样将ca ...

最新文章

  1. java内存溢出的定位和分析
  2. python处理列表中字典_Python列表嵌套字典的时候,如果要删除列表中其中一个字典要如何操作...
  3. 讲述Sagit.Framework解决:双向引用导致的IOS内存泄漏(上)
  4. 谷歌开源 Python 代码漏洞查找工具 Atheris
  5. luogu1005矩阵取数游戏题解--区间DP
  6. Python爬虫(一)--爬取猫眼Top100排行
  7. 报错error C3872: '0x3000': this character is not allowed in an identifier
  8. C51最小单片机系统
  9. U3D Pun2 官方文档学习和翻译
  10. 作业1:小型考勤登记表
  11. 【朝花夕拾】Android自定义View篇之(十)移动阈值TouchSlop及滑动追踪VelocityTracker...
  12. C语言 查找书籍(结构体)
  13. 计算机软件选修课选什么好,互联网行业,软件工程专业学什么?
  14. WordPress主题_大前端DUX主题7.1原版+优化-91apps.cn就要应用网
  15. 如何在微信小程序里面退出小程序
  16. mysql 连接慢安全狗_服务器安全狗端口安全策略导致微信小程序慢解决办法
  17. 射频卡读写原理及实现
  18. Android智能手机安全解决方案
  19. php报错 Function name must be a string in xxxx解决
  20. Windows10 下安装 dig 命令的步骤(一)

热门文章

  1. AccessibilityService黑科技(微信自动抢红包等)
  2. mstscccc.exe,病毒还是木马?
  3. mapbox 添加geoserver发布的wms服务及wms服务属性查询
  4. win7计算机管理打不开显示“未指定的错误”解决办法
  5. EM算法(学习笔记)
  6. 技术成熟度/制造成熟度/产品成熟度
  7. JavaScript 作用域
  8. Verilog数字系统设计——10进制计数器,具有异步复位功能
  9. PTA练习题错题归纳
  10. 高等工程热力学复习05