导出

html页面

定义的按钮

<a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="system:student:export"><i class="fa fa-download"></i> 导出</a>

映射的路径

exportUrl: prefix + "/export",

实体类
加入注解,导出谁就在谁上面加入注解----@Excel

Controller层

 //导出@Log(title = "学生管理", businessType = BusinessType.EXPORT)@RequiresPermissions("system:student:export")@PostMapping("/export")@ResponseBodypublic AjaxResult export(SysStudent student){List<SysStudent> list = studentService.selectStudentList(student);ExcelUtil<SysStudent> util = new ExcelUtil<SysStudent>(SysStudent.class);return util.exportExcel(list, "学生数据");}

导入
没有模板就不知道要导入什么,所以需要先有一个模板
导入的时候,因必要条件还要确定是否重复,出现两个一摸一样的就没有必要了吧,我这是学生表,所以还需要对其通过名字进行查询

HTML页面

<a class="btn btn-info" onclick="$.table.importExcel()" shiro:hasPermission="system:student:import"><i class="fa fa-upload"></i> 导入</a>

映射

importUrl: prefix + "/importStudent",//导入
importTemplateUrl: prefix + "/importTemplate",//导出模板

导入的前端页面

<!-- 导入区域 -->
<script id="importTpl" type="text/template"><form enctype="multipart/form-data" class="mt20 mb10"><div class="col-xs-offset-1"><input type="file" id="file" name="file"/><div class="mt10 pt5"><input type="checkbox" id="updateSupport" name="updateSupport" title="如果登录账户已经存在,更新这条数据。"> 是否更新已经存在的用户数据&nbsp; <a onclick="$.table.importTemplate()" class="btn btn-default btn-xs"><i class="fa fa-file-excel-o"></i> 下载模板</a></div><font color="red" class="pull-left mt10">提示:仅允许导入“xls”或“xlsx”格式文件!</font></div></form>
</script>

Controller层

/*** 下载模板*/@RequiresPermissions("system:student:view")@GetMapping("/importTemplate")@ResponseBodypublic AjaxResult importTemplate(){ExcelUtil<SysStudent> util = new ExcelUtil<SysStudent>(SysStudent.class);return util.importTemplateExcel("学生数据");}
 /*** 导入*/@RequiresPermissions("system:student:import")@PostMapping("/importStudent")@ResponseBodypublic AjaxResult importStudent(MultipartFile file, boolean updateSupport) throws Exception{ExcelUtil<SysStudent> util = new ExcelUtil<SysStudent>(SysStudent.class);List<SysStudent> studentList = util.importExcel(file.getInputStream());String operName = ShiroUtils.getSysUser().getLoginName();String message = studentService.importStudent(studentList, updateSupport, operName);return AjaxResult.success(message);}

service层

/*** 导入学生数据** @param studentList 学生数据列表* @param updateSupport 是否更新支持,如果已存在,则进行更新数据* @param operName 是否更新支持,如果已存在,则进行更新数据* @return 结果*/public String importStudent(List<SysStudent> studentList, Boolean updateSupport, String operName) ;

serviceImpl层

 /*** 导入用户数据** @param studentList 用户数据列表* @param updateSupport 是否更新支持,如果已存在,则进行更新数据* @param operName 操作用户* @return 结果*/private static final Logger log = LoggerFactory.getLogger(SysStudentServiceImpl.class);@Overridepublic String importStudent(List<SysStudent> studentList, Boolean updateSupport, String operName){if (StringUtils.isNull(studentList) || studentList.size() == 0){throw new BusinessException("导入用户数据不能为空!");}int successNum = 0;int failureNum = 0;StringBuilder successMsg = new StringBuilder();StringBuilder failureMsg = new StringBuilder();for (SysStudent student : studentList){try{// 验证是否存在这个用户SysStudent u = studentMapper.selectStudentByName(student.getStudentName() );System.out.print(student.getStudentSex()+"");if (StringUtils.isNull(u)){student.setStudentName(student.getStudentName());this.insertStudent(student);successNum++;successMsg.append("<br/>" + successNum + "学校信息" + student.getStudentName() + " 导入成功");}else if (updateSupport){student.setUpdateBy(operName);this.updateStudent(student);successNum++;successMsg.append("<br/>" + successNum + "学校信息 " + student.getStudentName() + " 更新成功");}else{failureNum++;failureMsg.append("<br/>" + failureNum + "学校信息" + student.getStudentName() + " 已存在");}}catch (Exception e){failureNum++;String msg = "<br/>" + failureNum + "学校信息" + student.getStudentName() + " 导入失败:";failureMsg.append(msg + e.getMessage());log.error(msg, e);}}if (failureNum > 0){failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");throw new BusinessException(failureMsg.toString());}else{successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");}return successMsg.toString();}

mapper层

mapper.xml
写一个根据姓名查询的方法,避免重复的

<select id="selectStudentByName" parameterType="String" resultMap="SysStudentResult"><include refid="selectStudentVo"/>where student_name = #{studentName}</select>


mapper.java文件写方法

/*** 通过学生姓名查询学生** @param studentName 用户名* @return 用户对象信息*/public SysStudent selectStudentByName(String studentName);

若依框架导入导出(Excel)相关推荐

  1. vue 导入excel插件_Vue框架下实现导入导出Excel、导出PDF

    项目需求:开发一套基于Vue框架的工程档案管理系统,用于工程项目资料的填写.编辑和归档,经调研需支持如下功能: Excel报表的导入.导出 PDF文件的导出 打印表格 经过技术选型,项目组一致决定通过 ...

  2. MacOS 10.15 Laravel框架 使用 Box/Spout 导入导出Excel

    MacOS 10.15 Laravel框架 使用 Box/Spout 导入导出Excel 准备工作 环境条件 安装Composer 使用Composer安装 Box/Spout 导入Excel 官方描 ...

  3. java excel data 导入数据_java实现导入导出excel数据

    项目需要,要实现一个导入导出excel的功能,于是,任务驱动着我学习到了POI和JXL这2个java操作Excel的插件. 一.POI和JXL介绍 1.POI:是对所有office资源进行读写的一套工 ...

  4. JAVA工具类(17)--Java导入导出Excel工具类ExcelUtil

    实战 导出就是将List转化为Excel(listToExcel) 导入就是将Excel转化为List(excelToList) 导入导出中会出现各种各样的问题,比如:数据源为空.有重复行等,我自定义 ...

  5. csv和excel php 解析_PHP 高效导入导出Excel(csv)方法之fgetcsv()和fputcsv()函数

    CSV,是Comma Separated Value(逗号分隔值)的英文缩写,通常都是纯文本文件. 一.CSV数据导入函数fgetcsv() fgetcsv() 函数从文件指针中读入一行并解析 CSV ...

  6. java 动态导入excel_java实现导入导出excel数据

    项目需要,要实现一个导入导出excel的功能,于是,任务驱动着我学习到了POI和JXL这2个java操作Excel的插件. 一.POI和JXL介绍 1.POI:是对所有office资源进行读写的一套工 ...

  7. npoi的mvc怎么ajax导出,asp.net mvc利用NPOI导入导出Excel解决方法

    asp.net mvc利用NPOI导入导出Excel 导出Excel 2003没有问题,导出Excel2007老是出现无法访问已关闭的流,请帮忙解决,或是哪位有mvc导入导出excel的工具类能提供, ...

  8. 【转】 (C#)利用Aspose.Cells组件导入导出excel文件

    Aspose.Cells组件可以不依赖excel来导入导出excel文件: 导入: public static System.Data.DataTable ReadExcel(String strFi ...

  9. 让 .Net 更方便的导入导出 Excel

    让 .Net 更方便的导入导出Excel Intro 因为前一段时间需要处理一些 excel 数据,主要是导入/导出操作,将 Excel 数据转化为对象再用程序进行处理和分析,没有找到比较满意的库,于 ...

最新文章

  1. 自动取款机如何使用无卡取款_如何设计700度高温下使用的自动夹具?
  2. ThinkPHP函数详解:M方法
  3. java的方法什么时候加载,java – JVM什么时候加载类?
  4. LeetCode 516. 最长回文子序列(动态规划)
  5. python 下载图片到内存卡_python - 获取图像大小而不将图像加载到内存中
  6. Java连载3-编译与运行阶段详解JRE,JDK,JVM关系
  7. string类的erase函数属于stl吗_C++ STL快速入门
  8. 听说年底这些公司在裁员?是不是真的......
  9. 阿里云物联网平台 > 设备接入 > 使用开放协议自主接入 > CoAP协议接入 >
  10. iOS 系统爆 Bug!
  11. SSH网上商城:回首网上商城
  12. C# asp.net页面通过URL参数传值中文乱码问题解决办法
  13. C++中sort排序之自定义排序cmp(入门)
  14. 排序算法——直接选择排序
  15. FPGA的I2S采集数据处理
  16. 软件体系结构风格复习总结
  17. js 微信端 信息一键导入 通讯录
  18. 使用rem等比例缩放手机界面
  19. oracle 查询 降序排列,Oracle 子查询,按降序排列,取前n条
  20. 软件工程复习题-快来划重点

热门文章

  1. 【多模态】MoE解决多模态单双塔问题 VLMo: Unifified Vision-Language Pre-Training with Mixture-of-Modality-Experts
  2. bash 括号(小括号,双小括号,中括号,双中括号,大括号)
  3. C++/Java写L1-028 判断素数 (10 分)
  4. android-魔法泡泡动画分析(附源码)
  5. java如何实现群聊,用Java控制台实现简单的群聊天室
  6. 华为手机的计算机删除了怎么恢复,华为手机误删了文件夹,怎么恢復
  7. luogu 3393 逃离僵尸岛
  8. Canon LBP3500在Ubuntu下面的驱动程序下载
  9. ps如何将智能对象转化为普通图层
  10. 我是程序员,想给工作室取名字,来10个给我参考一下