<script type="text/javascript" src="${ctxStatic}/admin/js/Huploadify/jquery.Huploadify.js"></script>
在使用插件之前首先到入js库
$('#excle').Huploadify({'uploader': '${ctx}/meeting/import','fileObjName': 'fileToUpload','fileTypeExts': '*.xlsx; *.xsl;','auto': true,'multi': false,'fileObjName': 'file','fileSizeLimit': 20480 * 60,'showUploadedPercent': true,'showUploadedSize': true,'onUploadSuccess': function (file, data) {
//            var josobj = JSON.parse(data);
//            var url=josobj.src;
//            var fileName=josobj.name;
//            $("#picture_address").val(url);if(data=='2'){layer.msg("导入会议签到表失败",{icon:2});}if(data ==""){layer.msg("有非参会人员签到,请确认信息是否正确!导入失败",{icon:2});}if(data =='1'){layer.msg("导入会议签到表成功",{icon:1});}//window.location.reload();//$('#file_picShow').html(' <span class="picSpan"><img class="picture" height="80px" width="80px" vedioSrc="' + josobj.src + '"  src="${ctxStatic}/Huploadify/fujian.png"></img>' + josobj.name + '</span>');},'onUploadError': function (file, errorCode, errorMsg, errorString) {alert('文件' + file.name + ' 上传错误: ' + errorMsg);},});
将一个div绑定上面的事件,在后台将导入的Excel数据存入磁盘
/*** 导入Excel数据*/
@RequiresPermissions(value = {"meeting:meeting:import", "meetingParticipants:meetingParticipants:export"}, logical = Logical.OR)
@RequestMapping(value = "import", method = RequestMethod.POST)
@ResponseBody
public String importFile(MultipartFile file, RedirectAttributes redirectAttributes, Meeting meeting,Model model,HttpServletRequest request) {String filepath = "";LayFileJsonData data = new LayFileJsonData();// 判断文件是否为空if (!file.isEmpty()) {// 文件保存路径String realPath = "files/";// 转存文件File saveDir = new File(request.getSession().getServletContext().getRealPath(realPath));//如果目录不存在,就创建目录?if(!saveDir.exists()){saveDir.mkdir();}String meetingNo = file.getOriginalFilename().substring(5,19);//根据会议的编号查找会议meeting=meetingService.getMeetingNo(meetingNo);//String type = file.getContentType().substring(file.getContentType().indexOf("/") + 1);if(meeting==null){return "2";}try {file.transferTo(new File(request.getSession().getServletContext().getRealPath("/") + realPath +Md5Util.parseStrToMd5L32(file.getOriginalFilename()+new SimpleDateFormat("yyyy-MM-dd").format(new Date()))));} catch (IOException e) {e.printStackTrace();}filepath = request.getContextPath() + realPath + Md5Util.parseStrToMd5L32(file.getOriginalFilename()+new SimpleDateFormat("yyyy-MM-dd").format(new Date()));data.setName(file.getOriginalFilename());data.setSrc(filepath);}try {InputStream input = new FileInputStream(Global.getUrlPath()+data.getSrc());  //建立输入流//这里导入Excel表的数据//XSSFWorkbook wb = new XSSFWorkbook(file.getInputStream());XSSFWorkbook wb = new XSSFWorkbook(input);XSSFSheet sheet = wb.getSheetAt(0);Integer rowNum = sheet.getLastRowNum();//遍历单元格的每一行for (int i = 1; i <= rowNum; i++) {XSSFRow row = sheet.getRow(i);//获取第i行第一列XSSFCell cel0 = row.getCell(0);//获取第i行第二列XSSFCell cel1 = row.getCell(1);//获取第i行第三列XSSFCell cel2 = row.getCell(2);XSSFCell cel3 = row.getCell(3);XSSFCell cel4 = row.getCell(4);XSSFCell cel5 = row.getCell(5);XSSFCell cel6 = row.getCell(6);XSSFCell cel7 = row.getCell(7);XSSFCell cel8 = row.getCell(8);XSSFCell cel9 = row.getCell(9);XSSFCell cel10 = row.getCell(10);MeetingIn meetingIn = new MeetingIn();//单位电话和名称,如果不为空说明,这是新的单位if (cel0 != null && (!cel0.getStringCellValue().equals(""))) {User user = new User();user.setName(cel0.getStringCellValue());if (cel1 == null) {user.setOfficePhone("");} else {user.setOfficePhone(cel1.getStringCellValue());}user = systemService.getNamneAndPhone(user);if(user !=null){//根据userID会议的ID查找meetingIn.setUserId(user.getId());meetingIn.setMeetingId(meeting.getId());meetingIn.setType("2");MeetingIn meetingIn1 =meetingInService.getMeetingidAndUseridAndType(meetingIn);if (meetingIn1!=null){meetingIn1.setMeetingId(meeting.getId());//根据会议ID和自己的ID查找List<MeetingParticipants> list=meetingInService.getByMeetingidAndMeetingInidAndimport(meetingIn1);if (list.size() != 0){for (MeetingParticipants meetingParticipants:list){String type = cel10.getStringCellValue();//判断签到状态if ("未签到".equals(type)) {meetingParticipants.setType("0");} else if ("已签到".equals(type)) {meetingParticipants.setType("1");} else if ("迟到".equals(type)) {meetingParticipants.setType("2");} else {//如果有请假人要对整个meetingIn更新meetingParticipants.setType("3");meetingIn = meetingInService.getId(meetingIn.getId());meetingIn.setWhetherLeave("1");meetingInService.save(meetingIn);}meetingParticipantsService.save(meetingParticipants);}}else {addMessage(redirectAttributes,"有非参会人员签到,请确认信息是否正确导入失败");//return "redirect:" + Global.getAdminPath() + "/meeting/detail?id="+meeting.getId();return "";}}}else {addMessage(redirectAttributes,"有非参会人员签到,请确认信息是否正确导入失败");//return "redirect:" + Global.getAdminPath() + "/meeting/detail?id="+meeting.getId();return "";}}}input.close();} catch (Exception e) {addMessage(redirectAttributes, "导入会议失败!失败信息:" + e.getMessage());return "2";}//return "redirect:" + Global.getAdminPath() + "/meeting/detail?id="+meeting.getId();return "1";
}
返回的事json数据,这里有两点很重要,一是要对系统做区别,还有对文件进行加密(不是必须的)下面是加密的类

/*** 获取硬盘上的绝对路径*/
public static String getUrlPath(){//linux下String classPath = Global.class.getClassLoader().getResource("/").getPath();String rootPath  = "";if("/".equals(File.separator)){rootPath  = classPath.substring(0,classPath.indexOf("/WEB-INF/classes"));rootPath = rootPath.replace("\\", "/")+"/";}//windows下if("\\".equals(File.separator)){rootPath = classPath.substring(1,classPath.indexOf("/WEB-INF/classes"));rootPath = rootPath.replace("/", "\\")+"\\";}return rootPath;
}
public class Md5Util {/*** @Description: 32位小写MD5*/public static String parseStrToMd5L32(String str) {String reStr = null;try {MessageDigest md5 = MessageDigest.getInstance("MD5");byte[] bytes = md5.digest(str.getBytes());StringBuffer stringBuffer = new StringBuffer();for (byte b : bytes) {int bt = b & 0xff;if (bt < 16) {stringBuffer.append(0);}stringBuffer.append(Integer.toHexString(bt));}reStr = stringBuffer.toString();} catch (NoSuchAlgorithmException e) {e.printStackTrace();}return reStr;}/*** @Description: 32位大写MD5*/public static String parseStrToMd5U32(String str) {String reStr = parseStrToMd5L32(str);if (reStr != null) {reStr = reStr.toUpperCase();}return reStr;}/*** @Description: 16位小写MD5*/public static String parseStrToMd5U16(String str) {String reStr = parseStrToMd5L32(str);if (reStr != null) {reStr = reStr.toUpperCase().substring(8, 24);}return reStr;}/*** @Description: 16位大写MD5*/public static String parseStrToMd5L16(String str) {String reStr = parseStrToMd5L32(str);if (reStr != null) {reStr = reStr.substring(8, 24);}return reStr;}public static String encodePassword(String rawPass) {String saltedPass = mergePasswordAndSalt(rawPass, "PONY", false);MessageDigest messageDigest = getMessageDigest();byte[] digest;try {digest = messageDigest.digest(saltedPass.getBytes("UTF-8"));} catch (UnsupportedEncodingException e) {throw new IllegalStateException("UTF-8 not supported!");}return null;}protected static String mergePasswordAndSalt(String password, Object salt, boolean strict) {if (password == null) {password = "";}if ((strict) && (salt != null) && ((salt.toString().lastIndexOf("{") != -1) || (salt.toString().lastIndexOf("}") != -1))) {throw new IllegalArgumentException("Cannot use { or } in salt.toString()");}if ((salt == null) || ("".equals(salt))) {return password;}return password + "{" + salt.toString() + "}";}protected final static MessageDigest getMessageDigest() {String algorithm = "MD5";try {return MessageDigest.getInstance(algorithm);} catch (NoSuchAlgorithmException e) {throw new IllegalArgumentException("No such algorithm [" + algorithm + "]");}}public boolean isPasswordValid(String encPass, String rawPass) {String pass1 = "" + encPass;String pass2 = encodePassword(rawPass);return pass1.equals(pass2);}public static void main(String[] args) {System.out.println(parseStrToMd5L32("111"));System.out.println(parseStrToMd5U32("111"));System.out.println(encodePassword("111"));}}
这个是区分系统的,这个很重要

使用插件导入Excel表到数据库相关推荐

  1. MySQL学习记录(导入Excel表到数据库,并筛选条件输出)

    附上:重置mysql账号密码方法 ubuntu系统下mysql重置密码和修改密码操作 - skh2015java的博客 - CSDN博客(改完重启,登录mysql要root/sudo权限) Cento ...

  2. 帆软填报--导入Excel前清空数据库表

    也可以参考 需求 自定义一个导入Excel前清空数据库表的按钮 模板Web属性中的清空导入并不能真正实现清空数据库表 实现思路 通过在填报页面设置中添加「Excel导入前」事件,设置在 Excel 导 ...

  3. 实现导入Excel表导入数据库并显示在echarts图形上面

    实现导入Excel表导入数据库并显示在echarts图形上面 页面效果: 前端是使用:https://docs.sheetjs.com/ sheetjs 读取excel表里面的数据转化为 json数据 ...

  4. mysql 命令导入excel,【mysql命令导入excel表】excel表格怎样导入数据库

    怎么把excel里的数据导入数据库中的表中 打开企业管理器开要导入数数据库,在表上按右键,所务-->导入数据,弹出DTS导入/导出向导,按 下一步 , 2.选择数据源 Microsoft Exc ...

  5. php导入关系表,PHP导入Execl表到数据库

    PHP导入Execl表到数据库 /** * 上传文件 */ function uploadFileforExcel() { // 允许上传的图片后缀 //$allowedExts = array(&q ...

  6. springmvc使用easypoi导出导入Excel表(1):导出Excel表

    编译工具:eclipse 项目:maven+ssm springmvc使用easypoi导出导入Excel表(2):导入Excel表 在pom.xml引入easypoi的依赖包: <!--eas ...

  7. php修改excel表格数据,php修改excel表格数据-php怎么导入Excel表格到数据库,根据表格内的字段......

    php怎么导入Excel表格到数据库,根据表格内的字段... 昨天项目里有个新知需求,客户希望把一些数据能导出成为Excel表格道,刚开始用PHP原生输入Excel表格,发现效果不是很理想,于是找到一 ...

  8. Python导入Excel到Mysql数据库

    一.简介 Python导入Excel到Mysql数据库 自动创建ID为自增. 根据Excel表格表头自动生成数据库字段. 二.使用方法 修改configure配置即可. import pandas a ...

  9. brother标签打印软件_标签打印软件如何导入excel表批量制作光缆标牌

    光缆标牌是贴在光缆线上的标识牌,一般记录着该光缆的起始位置和结束位置,以及当前光缆的线长,有了光缆标牌可以使人了解该光缆线的具体情况,以及方便后期维修人员对光缆线的维修检测.那么一般的光缆标牌是如何批 ...

  10. 对Excel表与数据库的操作

    对Excel表与数据库的操作: 如果想将数据从数据库导到Excel表中方法很多: 1  最简单就是在Excel 表中直接导入 步骤如下: 打开导入数据的Excle表格,选择工具栏数据; 下拉栏目中选择 ...

最新文章

  1. C++拷贝构造函数详解
  2. 105. Leetcode 121. 买卖股票的最佳时机 (动态规划-股票交易)
  3. java handler的用法_Handler和内部类的正确用法
  4. api postmain 鉴权_WebAPI常见的鉴权方法,及其适用范围
  5. matlab里a1不能做变量,在matlab中将含有变量“w”的表达式存入矩阵元素,无法生成矩阵。哪里出问题了?...
  6. 实操教程|Pytorch - 弹性训练极简实现( 附源码)
  7. 概率论——几何随机变量
  8. C#——SqlParameter的使用方法及注意事项
  9. 批处理、分时、实时、网络、分布式操作系统的区别
  10. 桥本分数式(蓝桥杯)
  11. 集合例题3.:现在有一个map集合如下:Map<Integer,String> map = new HashMap<Integer, String>();map.put(1, “张三丰“);map.
  12. c语言字符数组讲课PPT,C语言数组应用与字符串.ppt
  13. Qt 自定义tablewidget(背景色,标题箭头)
  14. 第1关:学会使用 Gensim
  15. CCF认证201403-1相反数
  16. 令牌桶生成令牌_使用令牌的经典ASP登录系统
  17. 一个完整的渗透学习路线是怎样的?如何成为安全渗透工程师?
  18. 期货淀粉相关品种(期货淀粉相关品种是什么)
  19. JS实现浏览器点击下载图片
  20. HTTP协议中POST与GET的详细区别总结----------通俗易懂

热门文章

  1. cdr多页面排版_CDR文字排版实战图文教程,CorelDRAW文字排版有哪些技巧?
  2. 网站怎么移动适配?这些小技巧你必须要会
  3. 计算机专业英语的缩写词,计算机专业英语单词缩写表
  4. 7-2 两个有序链表序列的合并 (20分)
  5. word写论文公式编号问题
  6. 小程序进阶-用户消息通知
  7. 中国网络安全厂商、安全培训机构大全(2019-7-1)
  8. 什么是android原生系统版本,定制安卓和原生Android到底有哪些不同之处?彻底真相了...
  9. 登录mysql服务器的典型命令_Mysql 远程登录及常用命令
  10. ANSYS Products 2020中文版