前两天探究一个直接从Excel中复制数据到html中的实现方法。现在很多html编辑器都实现了表格的复制,但是如果不借助编辑器,如何将Excel中的数据复制到html中对应的table呢?
基本的思路就是获取到复制的内容,然后解析并填入相应的位置中。首先想到的是通过js获取剪切板的内容,可惜的是,在浏览器中通过js获取剪切板的内容是被限制的。另外的一种方法,是通过flash去获取,这种方法可以避开浏览器的安全限制,然而,flash这种正在逐渐被抛弃的技术,还是少用为妙。
上网搜了一下,找到了一种较为巧妙地方法。先上demo代码:
DEMOfunction cellkeydown(event) {
if (event.ctrlKey && event.keyCode == 86) {
var ss = document.getElementById("textArea");
ss.focus();
ss.select();
// 等50毫秒,keyPress事件发生了再去处理数据
setTimeout("dealwithData()",50);
}
}
function dealwithData(event) {
var ss = document.getElementById("textArea");
alert(ss.value);
ss.blur();
}
首先在body上注册了onkeydown事件,当用户按下ctrl+v键的时候,js将焦点转移到一个textarea标签上,这样,接下来的keyPress和keyUp事件就发生在textarea上了,自然而然的就相当于用户在textarea中复制了一下,然后,js再将焦点转移,从textarea中将值取到。这样就取到了剪贴板内文本数据了。
获得的Excel的文本数据,按照\t,\n就可以分割得到格子和行信息了。
简单而巧妙地方法,Mark之