web中的数据导入与导出
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中的数据导入与导出相关推荐
- GEE系列:第4单元 Google 地球引擎中的数据导入和导出
GEE从入门到实战的10个系列单元: GEE系列:第1单元 Google地球引擎简介 GEE系列:第2单元 探索数据集 GEE系列:第3单元 栅格遥感影像波段特征及渲染可视化 GEE系列:第4单元 ...
- matlab中的数据导入和导出
在编写一个程序时,经常需要从外部读入数据,或者将程序运行的结果保存为文件.MATLAB使用多种格式打开和保存数据.本章将要介绍 MATLAB中文件的读写和数据的导入导出. 13.1 数据基本操作 本 ...
- 第二节 MATLAB中图像数据导入、导出和转换
图像数据的导入和导出,图像类型和类的转换 MATLAB® 中的基本数据结构体(数组)天然适合表示图像.使用工具箱函数,您可以从支持的图形文件或科学文件格式将图像数据导入工作区.反过来,您也可以将数据从 ...
- java导出csv文件_R语言数据导入与导出
R语言数据导入与导出 整这么一个系列,还是因为学R语言时遇到过一个非常"小白友好"的网站"DataScience Made Simple".相信很多人搜到过这个 ...
- oracle数据泵导入导出_【软件】R语言数据导入与导出
"R语言导入文本和xlsx文件数据的方法,以及数据与图片的输出" 许多数据往往保存在TXT文件或Excel文件中,该如何将这些文件导入R语言进行分析呢?另外,使用R语言处理完数据之 ...
- 【clickhouse】使用waterdrop将Hive中的数据导入ClickHouse
1.概述 转载:使用waterdrop将Hive中的数据导入ClickHouse 这里仅仅自己学习用. 前言 最近有一个需求需要把hive的数据同步到clickhouse,而且数据量还比较大,所以使用 ...
- csv导入pgsql不成功_数据科学 | pandas数据导入与导出
↑↑↑↑↑点击上方蓝色字关注我们! 『运筹OR帷幄』原创 作者:杨士锦 周岩 书生 编者按 当我们开始着手做一个数据分析项目时,选择和导入数据集是第一个步骤,而导出数据虽然非必需,但有时候我们也需要保 ...
- 如何在ex表格导入php_怎么使用php把表格中的数据导入到excel中,php如何快速导入excel表格数据...
php怎么导入大量数据的excel php导出数据的Excel: PHP从数据库分多次读取100万行记录,和分将100万入文本文件都没问题 Excel可以支100万行记录,Excel 2003最大支持 ...
- lisp倒入excel数据画图_如何将EXCEL中的数据导入到CAD中,绘制成曲线|
如何将EXCEL中的数据导入到CAD中,绘制成曲线 如果不用软件,只用CAD自身功能的话可以通过多段线生成你需要的曲线.你给出你的曲线函数,我给你生成曲线坐标以及CAD能自动绘制的文件格式 怎样将ca ...
最新文章
- java内存溢出的定位和分析
- python处理列表中字典_Python列表嵌套字典的时候,如果要删除列表中其中一个字典要如何操作...
- 讲述Sagit.Framework解决:双向引用导致的IOS内存泄漏(上)
- 谷歌开源 Python 代码漏洞查找工具 Atheris
- luogu1005矩阵取数游戏题解--区间DP
- Python爬虫(一)--爬取猫眼Top100排行
- 报错error C3872: '0x3000': this character is not allowed in an identifier
- C51最小单片机系统
- U3D Pun2 官方文档学习和翻译
- 作业1:小型考勤登记表
- 【朝花夕拾】Android自定义View篇之(十)移动阈值TouchSlop及滑动追踪VelocityTracker...
- C语言 查找书籍(结构体)
- 计算机软件选修课选什么好,互联网行业,软件工程专业学什么?
- WordPress主题_大前端DUX主题7.1原版+优化-91apps.cn就要应用网
- 如何在微信小程序里面退出小程序
- mysql 连接慢安全狗_服务器安全狗端口安全策略导致微信小程序慢解决办法
- 射频卡读写原理及实现
- Android智能手机安全解决方案
- php报错 Function name must be a string in xxxx解决
- Windows10 下安装 dig 命令的步骤(一)