使用插件导入Excel表到数据库
<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表到数据库相关推荐
- MySQL学习记录(导入Excel表到数据库,并筛选条件输出)
附上:重置mysql账号密码方法 ubuntu系统下mysql重置密码和修改密码操作 - skh2015java的博客 - CSDN博客(改完重启,登录mysql要root/sudo权限) Cento ...
- 帆软填报--导入Excel前清空数据库表
也可以参考 需求 自定义一个导入Excel前清空数据库表的按钮 模板Web属性中的清空导入并不能真正实现清空数据库表 实现思路 通过在填报页面设置中添加「Excel导入前」事件,设置在 Excel 导 ...
- 实现导入Excel表导入数据库并显示在echarts图形上面
实现导入Excel表导入数据库并显示在echarts图形上面 页面效果: 前端是使用:https://docs.sheetjs.com/ sheetjs 读取excel表里面的数据转化为 json数据 ...
- mysql 命令导入excel,【mysql命令导入excel表】excel表格怎样导入数据库
怎么把excel里的数据导入数据库中的表中 打开企业管理器开要导入数数据库,在表上按右键,所务-->导入数据,弹出DTS导入/导出向导,按 下一步 , 2.选择数据源 Microsoft Exc ...
- php导入关系表,PHP导入Execl表到数据库
PHP导入Execl表到数据库 /** * 上传文件 */ function uploadFileforExcel() { // 允许上传的图片后缀 //$allowedExts = array(&q ...
- springmvc使用easypoi导出导入Excel表(1):导出Excel表
编译工具:eclipse 项目:maven+ssm springmvc使用easypoi导出导入Excel表(2):导入Excel表 在pom.xml引入easypoi的依赖包: <!--eas ...
- php修改excel表格数据,php修改excel表格数据-php怎么导入Excel表格到数据库,根据表格内的字段......
php怎么导入Excel表格到数据库,根据表格内的字段... 昨天项目里有个新知需求,客户希望把一些数据能导出成为Excel表格道,刚开始用PHP原生输入Excel表格,发现效果不是很理想,于是找到一 ...
- Python导入Excel到Mysql数据库
一.简介 Python导入Excel到Mysql数据库 自动创建ID为自增. 根据Excel表格表头自动生成数据库字段. 二.使用方法 修改configure配置即可. import pandas a ...
- brother标签打印软件_标签打印软件如何导入excel表批量制作光缆标牌
光缆标牌是贴在光缆线上的标识牌,一般记录着该光缆的起始位置和结束位置,以及当前光缆的线长,有了光缆标牌可以使人了解该光缆线的具体情况,以及方便后期维修人员对光缆线的维修检测.那么一般的光缆标牌是如何批 ...
- 对Excel表与数据库的操作
对Excel表与数据库的操作: 如果想将数据从数据库导到Excel表中方法很多: 1 最简单就是在Excel 表中直接导入 步骤如下: 打开导入数据的Excle表格,选择工具栏数据; 下拉栏目中选择 ...
最新文章
- C++拷贝构造函数详解
- 105. Leetcode 121. 买卖股票的最佳时机 (动态规划-股票交易)
- java handler的用法_Handler和内部类的正确用法
- api postmain 鉴权_WebAPI常见的鉴权方法,及其适用范围
- matlab里a1不能做变量,在matlab中将含有变量“w”的表达式存入矩阵元素,无法生成矩阵。哪里出问题了?...
- 实操教程|Pytorch - 弹性训练极简实现( 附源码)
- 概率论——几何随机变量
- C#——SqlParameter的使用方法及注意事项
- 批处理、分时、实时、网络、分布式操作系统的区别
- 桥本分数式(蓝桥杯)
- 集合例题3.:现在有一个map集合如下:Map<Integer,String> map = new HashMap<Integer, String>();map.put(1, “张三丰“);map.
- c语言字符数组讲课PPT,C语言数组应用与字符串.ppt
- Qt 自定义tablewidget(背景色,标题箭头)
- 第1关:学会使用 Gensim
- CCF认证201403-1相反数
- 令牌桶生成令牌_使用令牌的经典ASP登录系统
- 一个完整的渗透学习路线是怎样的?如何成为安全渗透工程师?
- 期货淀粉相关品种(期货淀粉相关品种是什么)
- JS实现浏览器点击下载图片
- HTTP协议中POST与GET的详细区别总结----------通俗易懂
热门文章
- cdr多页面排版_CDR文字排版实战图文教程,CorelDRAW文字排版有哪些技巧?
- 网站怎么移动适配?这些小技巧你必须要会
- 计算机专业英语的缩写词,计算机专业英语单词缩写表
- 7-2 两个有序链表序列的合并 (20分)
- word写论文公式编号问题
- 小程序进阶-用户消息通知
- 中国网络安全厂商、安全培训机构大全(2019-7-1)
- 什么是android原生系统版本,定制安卓和原生Android到底有哪些不同之处?彻底真相了...
- 登录mysql服务器的典型命令_Mysql 远程登录及常用命令
- ANSYS Products 2020中文版