无论是电子商务网站,还是办公网站,都免不了要把一些excel导入到数据库中的功能,若依已经为此需求提供了很不错的封装与扩展。

前提:

首先,你需要建一张表,来存储你要导入的数据。本例中表名及实例名为:testexcel2
然后,用代码生成器生成代码,部署到你的应用中。

好了,序幕拉开,正局上演。

screen 1:添加导入按钮和前端逻辑,action!

step1 在模版文件的按钮区代码中添加以下代码,加上导入按钮:

<a class="btn btn-info" onclick="$.table.importExcel()"><i class="fa fa-upload"></i> 导入
</a>

最终效果如图:

step2 插入导入弹窗交互脚本:

<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>

最终结果如图:

step3 添加注册导入URL代码

importUrl: prefix + “/importData”,
最终结果如图:

Cut!

screen 2:添加后端逻辑,action!

step1 添加controller方法:

@PostMapping("/importData")
@ResponseBody
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
{ExcelUtil<Testexcel2> util = new ExcelUtil<Testexcel2>(Testexcel2.class);List<Testexcel2> list = util.importExcel(file.getInputStream());String operName = ShiroUtils.getSysUser().getLoginName();for (Testexcel2 s:list) {logger.debug(String.valueOf(s.getA()));}String message = testexcel2Service.importData(list, updateSupport, operName);return AjaxResult.success(message);
}

step2 添加service接口及实现方法:

接口:

public String importData(List<Testexcel2> list, boolean updateSupport, String operName) ;

实现:

@Override
public String importData(List<Testexcel2> list, boolean updateSupport, String operName) {{if (StringUtils.isNull(list) || list.size() == 0) {throw new BusinessException("导入数据不能为空!");}int successNum = 0;int failureNum = 0;StringBuilder successMsg = new StringBuilder();StringBuilder failureMsg = new StringBuilder();List<Testexcel2> existList = selectTestexcel2List(null);for (Testexcel2 importData : list) {try {// 验证是否存在这个學生boolean userFlag = false;for (Testexcel2 entry : existList) {if (entry.getA().equals(importData.getA())) {userFlag = true;break;}}if (!userFlag) {insertTestexcel2(importData);successNum++;successMsg.append("<br/>" + successNum + "、数据 " + importData.getA() + " 导入成功");} else if (updateSupport) {updateTestexcel2(importData);successNum++;successMsg.append("<br/>" + successNum + "、数据 " + importData.getA() + " 更新成功");} else {failureNum++;failureMsg.append("<br/>" + failureNum + "、数据 " + importData.getA() + " 已存在");}} catch (Exception e) {failureNum++;String msg = "<br/>" + failureNum + "、数据 " + importData.getA() + " 导入失败:";failureMsg.append(msg + e.getMessage());}}if (failureNum > 0) {failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");throw new BusinessException(failureMsg.toString());} else {successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");}return successMsg.toString();}
}

Cut!
收工,杀青!

在若依项目中添加导入excel功能相关推荐

  1. 若依项目中添加导入excel功能

    controller层 //參考地址:https://blog.csdn.net/weixin_45853881/article/details/109782444 /*** 导入*/ @Requir ...

  2. 关于 vue项目 中实现导入Excel表 + 预览生成的Excel

    项目场景(需求): 1.分步骤填写数据,填写并上传业务Excel表,完成校验,并生成结果 2.生成的结果要和 业务Excel表一致,便于用户比较 3.若未填写正确,则提示用户错误信息,且重新提交 项目 ...

  3. 在VS2005中 GridView导入Excel的两点小技巧-附源码

    VS2005中 GridView导入Excel的导入需要注意的几点 最近带的项目遇到GridView导入Excel问题,总结出几点: 1.如果出现下面的错误提示可用重载VerifyRenderingI ...

  4. VB.NET 在项目中添加App.config的配置

    右击项目,选择属性, 在属性中选择Settings选项卡,Scope选择User 这样就会在项目中添加了App.config配置 内容: <?xml version="1.0" ...

  5. Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作

    Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 1>. 创建一个控制台程序 2 ...

  6. 关于如何正确地在android项目中添加第三方jar包

                  在android项目中添加第三方jar包虽然不是一个很复杂的问题,但是确实给很多开发者带来了不小的困扰.我自己就曾经碰到过calss not found exception ...

  7. 给iOS项目中添加图片,并通过UIImageView引用和显示该UIImage图片

    [问题] 关于iOS/iPhone中的文件选择对话框,用于用户去选择图片等文件 过程中,问题转换为,需要给当前iOS项目中,添加一个图片. 类似于Windows开发中的资源文件,其中图片文件属于资源的 ...

  8. Resx 文件无效。未能加载 .RESX 文件中使用的类型 System.Collections.Generic.List`1请确保已在项目中添加了必需的引用。

    在C#程序编写过程中,会遇到:Resx 文件无效.未能加载 .RESX 文件中使用的类型 System.Collections.Generic.List1`请确保已在项目中添加了必需的引用. 主要原因 ...

  9. eclipse项目中关于导入的项目里提示HttpServletRequest 不能引用的解决办法

    eclipse项目中关于导入的项目里提示HttpServletRequest 不能引用的解决办法  当使用eclipse导入外部的web工程时,有时会提示HttpServletRequest, Ser ...

最新文章

  1. Ajax简单示例之改变下拉框动态生成表格
  2. 为什么程序员总是发现不了自己的Bug?
  3. jQuery 源码分析第一篇之入口源码
  4. 爬虫笔记:Requests库详解
  5. 学习索引结构的一些案例——Jeff Dean在SystemML会议上发布的论文(上)
  6. php 手写签批 手机办公_手写签批 打造无纸化办公的完美替代
  7. Zilliqa联合创始人:ZIP-12提案已成功部署,为未来的治理投票奠定基础
  8. cent7中kickstart
  9. bat实现监测计算机网络连接,断网自动重启网络连接
  10. 深入理解Java虚拟机 学习总结
  11. html5提交按钮如何改成图片,HTML5 订阅按钮变成填充表单动效
  12. 增强型绿植植被指数_MODIS增强型植被指数EVI与NDVI初步比较-中国科学院.PDF
  13. 服务器装系统鼠标键盘不能动,装系统鼠标键盘不能动
  14. python获取根目录_python如何获取当前工程根目录
  15. 多模态信息用于推荐系统问题(MMDIN,hyperCTR)
  16. STM32项目分享---MQTT智能门禁系统(含APP控制)
  17. 小程序地图组件开发全教程
  18. Fzu-2190 非提的救赎 (单调栈)
  19. 整理程序员常用英语单词1695个
  20. 回溯法(算法分析与设计)

热门文章

  1. plc虚拟服务器,VMware软件虚拟机和PLC通讯的连接方法
  2. vite:vue中引入图片报错require is not defined
  3. 【MySQL篇】第三篇——表的操作
  4. 数字签密算法JPBC实现
  5. 网络上的计算机病毒怎么办,电脑中病毒了怎么办
  6. 感悟《疯狂的程序员》
  7. macbook黑屏_Macbook苹果笔记本电脑开机黑屏如何解决【解决方法】
  8. 七号信令中TUP协议的主要消息和故障问题
  9. 还没有表白神器?情人节来喽,快为心爱的她送上一份专属的礼物吧~
  10. D语言游戏编程(1):工作环境