最近整理了个js,解决了excel导入读取数据遇到的种种问题
来源:互联网 发布:ps图片还原软件 编辑:程序博客网 时间:2024/05/17 02:58
做项目需要导入excel文件,导入的时候总会用到公式,宏等导致的导入数据失败
所以就想,能不能让用户把excel文档中的内容全选,然后粘贴到网页上用form提交,所以写了如下js
对第一个input单元格,获得焦点后点击ctrl+V,就会将excel文档复制到网页上
<head><script type="text/javascript" src="/jquery/jquery-1.4.2.min.js"></script></head><body><table id="drsj"><tr><td><input type="text" name="XM" /></td><td><input type="text" name="NSR_MC" /></td><td><input type="text" name="SFZZLX" /></td><td><input type="text" name="SFZZHM" /></td><td><input type="text" name="GJ" /></td><td><input type="text" name="SKSSQ" /></td><td><input type="text" name="SDXM" /></td><td><input type="text" name="SRE" /></td><td><input type="text" name="MSSRE" /></td><td><input type="text" name="YXKCSE" /></td><td><input type="text" name="FYKCBZ" /></td><td><input type="text" name="ZYKCJZE" /></td><td><input type="text" name="SNSDSE" /></td><td><input type="text" name="SL" /></td><td><input type="text" name="SSKCS" /></td><td><input type="text" name="YKSE" /></td><td><input type="text" name="YJSE" /></td><td><input type="text" name="BZ" /></td></tr></table><div id="ztmb" style="display: none;"><table><tr><td><input type="text" name="XM" /></td><td><input type="text" name="NSR_MC" /></td><td><input type="text" name="SFZZLX" /></td><td><input type="text" name="SFZZHM" /></td><td><input type="text" name="GJ" /></td><td><input type="text" name="SKSSQ" /></td><td><input type="text" name="SDXM" /></td><td><input type="text" name="SRE" /></td><td><input type="text" name="MSSRE" /></td><td><input type="text" name="YXKCSE" /></td><td><input type="text" name="FYKCBZ" /></td><td><input type="text" name="ZYKCJZE" /></td><td><input type="text" name="SNSDSE" /></td><td><input type="text" name="SL" /></td><td><input type="text" name="SSKCS" /></td><td><input type="text" name="YKSE" /></td><td><input type="text" name="YJSE" /></td><td><input type="text" name="BZ" /></td></tr></table></div></body><script type="text/javascript"> //借助js操作剪切板内容,完成Excel多单元格数据 到 Html table对应单元格的复制 //为每个text控件定义“获得输入焦点”和“失去焦点”时的样式 $("input[type='text']").focus(function(){ $(this).css({"background-color":"#FFFFE0"}); }).blur(function(){ $(this).css({"background-color":"white"}); }); //jquery中未对onpaste事件(即粘贴事件)进行封装,只好采用js原有的方式为每个text控件绑定onpaste事件 $.each($("input[type='text']"),function(obj,index){ this.onpaste = readClipboardData; }); //获取剪切板数据 函数 function getClipboard() { if (window.clipboardData) { return (window.clipboardData.getData('Text')); } else if (window.netscape) { netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard); if (!clip) return; var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable); if (!trans) return; trans.addDataFlavor('text/unicode'); clip.getData(trans, clip.kGlobalClipboard); var str = new Object(); var len = new Object(); try { trans.getTransferData('text/unicode', str, len); } catch (error) { return null; } if (str) { if (Components.interfaces.nsISupportsWString) strstr = str.value.QueryInterface(Components.interfaces.nsISupportsWString); else if (Components.interfaces.nsISupportsString) strstr = str.value.QueryInterface(Components.interfaces.nsISupportsString); else str = null; } if (str) { return (str.data.substring(0, len.value / 2)); } } return null; } //读取剪切板数据,并将剪切板数据存放于各table cell中 function readClipboardData() { var str = getClipboard(); //获取剪切板数据 var len = str.split("\n");//获取行数 //var tdIndex = $(this).parent().index(); //获取当前text控件的父元素td的索引 //var trIndex = $(this).parent().parent().index(); //获取当前text控件的父元素的父元素tr的索引 var trStr; //从excle表格中复制的数据,最后一行为空行,因此无需对len数组中最后的元素进行处理 if(len!=null&&len.length>1){ var newTr; var dqLenth=$("#drsj").find("tr").length; for(var i=0;i<len.length-dqLenth-1;i++){ newTr=document.getElementById("drsj").insertRow($("#drsj").find("tr").length); var mxTr=$("#ztmb").find("tr").html();$(newTr).html(mxTr); } dqLenth=$("#drsj").find("tr").length; var detailTable=document.getElementById("drsj"); for(var i=dqLenth;i>len.length-2;i--){ try{ detailTable.deleteRow(i); }catch(e){} } for(var i=0;i<len.length-1;i++){ //excel表格同一行的多个cell是以空格 分割的,此处以空格为单位对字符串做 拆分操作。。 trStr = len[i].split(/\s+/); if(trStr.length!=18){ //alert("内容行中,第"+(i+1)+"行数据错误,单元格中不能存在空数据,如为空请填充0"); } for(var j=0;j<=trStr.length-1;j++){ //将excel中的一行数据存放在table中的一行cell中 $("tr:eq("+i+")").children("td:eq("+(j)+")").children().val(trStr[j]); } } } return false; //防止onpaste事件起泡 } </script></html>
- 最近整理了个js,解决了excel导入读取数据遇到的种种问题
- 最近用htmlunit做网络爬虫 遇到拿不到初始化js加载的数据的问题 最近解决了 写个简单的例子
- 最近项目上遇到了个问题,一直未能解决
- 最近在研究nutch,整理了一下关于读取资源数据的命令。
- 最近在SDK下使用WebBrowser遇到了个问题
- 最近在SDK下使用WebBrowser遇到了个问题
- 最近遇到了 manifest 的相关问题的记录
- 最近一段时间遇到的费了时间的问题
- C#导入数据到Excel中遇到的问题,已解决
- 最近遇到了几个oracle权限的几个小问题
- 最近学curl函数.遇到了cookie的问题.
- .net导入Excel数据遇到问题(SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDataso)
- 文件读取的问题终于解决了!
- 终于解决了PHP调用SOAP过程中的种种问题
- 终于解决了PHP调用SOAP过程中的种种问题
- 最近发现了个页面生成二维码的js工具
- 今天解决了两个关于.NET读取EXCEL文件的问题,记下来,很有用!
- 最近在做微信上传素材,使用tp5做框架,遇到了41005的问题,这里是解决的方法
- ICCAVR编译器的介绍-----至我愚蠢的错误
- Xerces-c-src_2_8 安装&开发文档
- 关于钓鱼岛 南海
- ATmega128串口0不工作
- linux 常用c 函数
- 最近整理了个js,解决了excel导入读取数据遇到的种种问题
- 直线电机原理及应用
- 理解RESTful架构
- 在VMware虚拟机中Ubuntu的vi里的按键不好使的解决办法
- linux expect, spawn用法小记
- ubuntu下怎么新建文件夹
- 线性代数没学好,一路兵败如山倒
- Struts托管Spring中的问题
- Ubuntu下如何将普通用户提升到root权限