JS巧妙获取剪贴板数据--Excel数据的粘贴

      最近需要在浏览器端实现excel数据的粘贴,一开始去找获取剪贴板数据的方法。但是在浏览器端,JS去取是受安全限制的。另外的方法就是用flash了,它可以避开浏览器的安全限制,但是system类中只有set的方法,另外的clipboard类中倒是能访问到,但是似乎需要flash10的版本支持。

      网上找了一圈,没啥发现。终于想到去看看google sheet是怎么干的。

      发现google sheet实现了excel的纯文本的多数据格粘贴,没有安全限制的需要,没有使用flash。可能很多人都知道这种方法了,反正我一开始很惊讶的,但是无奈,google的js文件是处理过的,看起来太累了。然后又去找ZOHO sheet,它的js文件只简单处理了一下,能debug,能看。

      原来,其在body上注册了onkeydown事件,当用户按下ctrl+v键的时候,js将焦点转移到一个textarea标签上,这样,接下来的keyPress和keyUp事件就发生在textarea上了,自然而然的就相当于用户在textarea中复制了一下,然后,js再将焦点转移,从textarea中将值取到。这样就取到了剪贴板内文本数据了。

      下面是一个模仿ZOHO sheet实现的小例子。

     

      获得的Excel的文本数据,按照/t,/n就可以分割得到格子和行信息了。但这样只能得到简单的纯文本的excel值,格子的样式都弄不到。但我发现一个方法,当向iframe的document中复制的时候(就是在线编辑器的实现方式),这样能出现一些样式信息,IE中特别全,估计是因为自己家的产品自己能解析的缘故,FF和Chrome就只能得到行号列宽等一些简单的属性。不知道谁有方法能得到比较全的信息。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Delphi是一种编程语言,可以利用其提供的丰富功能来处理Excel文件。要将Excel中的数据复制到剪贴板上,可以使用以下步骤: 1. 引入相关单元:在Delphi代码中,首先需要使用Uses语句引入相关的单元,例如"Vcl.Clipbrd"。 2. 创建Excel和剪贴板对象:使用Delphi提供的类创建Excel和剪贴板对象。可以使用"CreateOleObject"方法创建Excel对象,使用"Clipboard"属性创建剪贴板对象。 3. 打开Excel文件:使用Excel对象的方法打开相应的Excel文件,比如使用"Workbooks.Open"方法。 4. 选择要复制的数据范围:使用Excel对象的相关方法选择要复制的数据范围,例如使用"Range"属性选择A1到B10单元格的数据。 5. 将数据复制到剪贴板:使用Excel对象的"Cop"方法将选定的数据复制到剪贴板上,例如使用"Selection.Copy"方法。 6. 释放Excel对象:完成数据复制后,使用Excel对象的方法关闭Excel文件和释放资源,例如使用"ActiveWorkbook.Close"方法和"Quit"方法。 7. 将剪贴板数据访问到Delphi应用程序:使用剪贴板对象的相关方法可以将数据访问到Delphi应用程序中,例如使用"ClipBoard.AsText"方法将剪贴板数据作为文本获取。 在以上步骤中,可以根据具体的需求自定义代码来实现更灵活的操作,如指定Excel文件路径、选择特定的数据区域等。通过这些步骤,我们可以将Excel中的数据成功复制到剪贴板上,并在Delphi应用程序中进行后续的操作或粘贴到其他地方。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值