最近需要在浏览器端实现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实现的小例子。
复制代码 代码如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript"><!--
function 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();
}
// --></script>
</head>
<body onkeydown="return cellkeydown(event)">
<div>
<textarea id="textArea">
获 得的Excel的文本数据,按照\t,\n就可以分割得到格子和行信息了。但这样只能得到简单的纯文本的excel值,格子的样式都弄不到。但我发现一个 方法,当向iframe的document中复制的时候(就是在线编辑器的实现方式),这样能出现一些样式信息,IE中特别全,估计是因为自己家的产品自 己能解析的缘故,FF和Chrome就只能得到行号列宽等一些简单的属性。不知道谁有方法能得到比较全的信息。
相关推荐
本篇文章将详细探讨如何在Delphi中获取剪贴板中的Excel数据,并将其封装成自定义的数据集。 首先,我们要理解剪贴板在操作系统中的作用。剪贴板是操作系统提供的一种临时存储区域,用户可以将数据复制到剪贴板,...
然后,JavaScript可以与Flash应用通信,来获取剪贴板数据。这种方法虽然可以绕过浏览器的限制,但需要用户安装Flash插件,并且随着HTML5的发展和各大浏览器厂商开始弃用Flash,这种做法已不再推荐。 #### 实现示例 ...
剪贴板数据获取是计算机编程中的一个常见任务,特别是在多应用程序交互或用户界面设计中。剪贴板提供了在不同程序间传递信息的便捷途径。在本文中,我们将深入探讨如何在不同的编程语言中获取剪贴板的数据,并了解...
在JavaScript中,获取剪贴板内容涉及到浏览器的安全性和API的使用。剪贴板是操作系统提供的一种数据暂存区域,用户可以复制和粘贴文本、图片等信息。在JavaScript中,我们通常通过`clipboardData`对象来操作剪贴板。...
总的来说,`Clipboard`类是C#中处理剪贴板操作的重要工具,通过`IDataObject`接口,我们可以获取到剪贴板上的多种类型数据,从而实现更复杂的剪贴板交互功能。在实际开发中,这可以用于数据交换、用户输入检测等多种...
- 使用`OpenClipboard(NULL)`打开剪贴板,`EmptyClipboard()`清空剪贴板内容,`GetClipboardData(CF_DIB)`获取剪贴板中的DIB(设备无关位图)数据,最后用`CloseClipboard()`关闭剪贴板。 2. **DIB(Device ...
Visual C++源代码 194 如何使用剪贴板导出Excel文件Visual C++源代码 194 如何使用剪贴板导出Excel文件Visual C++源代码 194 如何使用剪贴板导出Excel文件Visual C++源代码 194 如何使用剪贴板导出Excel文件Visual ...
当需要从剪贴板粘贴图片时,我们可以通过Clipboard.GetDataObject()方法获取数据,然后判断数据类型是否为Bitmap,如果是则可以将其显示在PictureBox控件上: ```csharp private void PasteFromClipboard_Click...
在Delphi编程环境中,获取剪贴板中的图像是一项常见的任务,尤其在涉及到用户交互和数据交换的场景下。本文将详细讲解如何利用Delphi的API函数来实现这一功能,并提供一个简单的源码示例。 首先,剪贴板是操作系统...
3. **获取剪贴板数据**: 使用`IsClipboardFormatAvailable()`检查剪贴板是否包含特定格式的数据,如CF_TEXT。如果可用,可以使用`GetClipboardData()`获取数据,并通过`GlobalLock()`锁定,读取数据后再`...
剪贴板是操作系统提供的一种数据共享机制,用户可以将文本、图像等数据复制到剪贴板,然后在不同的程序之间粘贴。在易语言中,通过特定的API调用或者易语言内置的剪贴板模块,我们可以编写程序来监控剪贴板的文本...
6. 使用剪贴板数据填充单元格:在Excel中,通过`Paste`方法将剪贴板上的数据粘贴到指定的单元格。例如,`worksheet->Range["A1"]->Paste();` 7. 保存并关闭工作簿:完成数据导入后,使用`Workbook`对象的`Save`方法...
下面是一个简单的C#剪贴板粘贴文本数据的实例: ```csharp using System.Windows.Forms; // ... private void PasteTextFromClipboard() { // 检查剪贴板上是否存在文本数据 if (Clipboard.ContainsText()) { ...
总之,掌握剪贴板操作对于Windows应用程序的开发非常重要,它使得数据能够在不同的程序间方便地复制和粘贴。通过学习和实践这个VC6.0源代码,你将加深对Windows API的理解,提升你的Windows编程技能。
在本文中,我们将探讨如何在编程中实现自定义剪贴板数据类型的应用,特别是在易语言学习论坛中提到的那种功能:复制网页文本或Word文本后,通过按钮获取其源码。 首先,我们需要理解剪贴板操作的基本概念。在易语言...
在IT领域,剪贴板是操作系统提供的一种通用数据交换机制,允许用户或应用程序临时存储和传递数据。在Windows操作系统中,我们经常使用Ctrl+C和Ctrl+V进行复制和粘贴操作,这就是剪贴板功能的体现。位图(Bitmap)是...
3. 取数据命令:对于非文本数据,我们可以使用“取剪贴板数据”命令,它允许我们指定数据类型来获取剪贴板上的特定类型数据。例如,如果我们想取剪贴板上的位图数据,可以使用“取剪贴板位图”子命令。 4. 处理非...
在处理涉及数据复制和粘贴的工作时,剪贴板的使用非常常见。有时,为了提高效率或者避免数据混淆,我们需要清空剪贴板的内容。以下是对“vba清空剪贴板内容”这一主题的详细讲解: 一、VBA剪贴板的基本概念 VBA中的...