Sharpleo 发表于 2013-1-29 08:34:59

[转]js操作剪切板内容Excel多单元格数据到Html table对应单元格的复制

<script type="text/javascript">          //为每个text控件定义“获得输入焦点”和“失去焦点”时的样式       $("input").focus(function(){                $(this).css({"background-color":"#FFFFE0"});            }).blur(function(){                $(this).css({"background-color":"white"});         });       //jquery中未对onpaste事件(即粘贴事件)进行封装,只好采用js原有的方式为每个text控件绑定onpaste事件       $.each($("input"),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数组中最后的元素进行处理   for(var i=0;i<len.length-1;i++){            //excel表格同一行的多个cell是以空格 分割的,此处以空格为单位对字符串做 拆分操作。。            trStr = len.split(/\s+/);                for(var j=0;j<=trStr.length-1;j++){ //将excel中的一行数据存放在table中的一行cell中                   $("tr:eq("+trIndex+")").children("td:eq("+(tdIndex+j)+")").children().val(trStr);               }               trIndex ++ ;         }         return false; //防止onpaste事件起泡       }            </script></html>
页: [1]
查看完整版本: [转]js操作剪切板内容Excel多单元格数据到Html table对应单元格的复制