2009-08-10 82 views
3

我已经构建了一个Web应用程序,它具有用于填充表的粘贴按钮。数据最初是从Excel电子表格复制并粘贴到我的表单上。Excel复制到剪贴板截取数据

问题是我只看到显示的数据,而没有看到底层的值。例如,如果单元格的值是12.223,单元格的格式只显示12.2,则12.2会进入剪贴板。

我在这里错过了一招吗?有谁知道如何从剪贴板中提取完整的数据?

编辑:看来Excel在剪贴板上提供了25种不同的格式,包括“XML Spreadsheet”,它看起来像包含我需要的实际信息。但是,似乎只有Text版本在浏览器中可用。是否有ActiveX控件或类似的东西可以用来获取这些数据?

+0

你可以发布一些代码,看看你是如何接近这? – JFV 2009-08-10 12:11:56

+0

导出为CSV时Excel执行同样的操作。它会垃圾所有没有被显示的东西。我猜你不想将Excel复制到一个单词文档中,并获得大数小数。 – pjp 2009-08-10 12:13:47

+1

@FJV:可能是Ctrl + A,Ctrl + C,Alt-Tab,Ctrl + V :) – pjp 2009-08-10 12:14:24

回答

5

我可以看到做到这一点的唯一方法是敲掉一些使用Windows窗体对象库的VBA代码。

我已经找到了代码示例,使得使用剪贴板

http://www.dailydoseofexcel.com/archives/2004/12/02/putting-text-into-the-windows-clipboard/

的默认情况下,这将刚才复制的单元格的可见文本。得到它的输出你需要的实际值改变

cell.Text 

cell.Value 

虽然这将可能陷入困境,如果你有他们的任何日期。

编辑:

事实上的日期似乎您复制单元格后复制OK

+0

谢谢。你知道VBA脚本可以挂钩到Ctrl-C或右键单击并复制的方式吗?电子表格的用户适用于各种不同的公司,他们目前的解决方案非常简单。给他们一个新的复制图标不会太好! – 2009-08-17 10:00:18

+0

如果您点击工具,宏,宏,突出显示宏并按选项,然后您可以将其分配给Ctrl + C组合。 – pjp 2009-08-17 10:27:08

0

,右键单击并选择粘贴特价,然后选择下粘贴值选项。这将粘贴完整的值。

+2

问题在于Paste Special在其他应用程序中似乎不可用。 – pjp 2009-08-18 06:29:11

+0

我想你可以做到以下几点:复制Excel数据,粘贴到一张新的工作表,然后将其复制到剪贴板。 – pjp 2009-08-18 06:30:39

+0

你是对的,仅限于Excel。 – 2009-08-18 15:22:32

0

只要你是快乐的使用额外的表来包含格式化的复制,你也可以做的数据可以

Sub CopyPasteSpecialCopy() 

    'Clear out temp destination 
    Sheets("CopyPasteSheet").Select 
    Cells.Select 
    Selection.ClearContents 

    'Copy data 
    Sheets("DataSheet").Select 
    Cells.Select 
    Application.CutCopyMode = False 
    Selection.Copy 

    'Paste data 
    Sheets("CopyPasteSheet").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Cells.Select 
    Application.CutCopyMode = False 

    'Put it onto the clipboard 
    Selection.Copy 

End Sub 

虽然我不能看到粘贴XML只值的选项。

再次将此宏附加到Ctrl + C组合键。

+0

我无法做任何事情的Excel方面。它必须是一个浏览器解决方案。 – 2009-08-18 08:32:49

+0

如果您无法对Excel/VBA进行任何更改,那么您唯一的选择是允许用户上传工作表并在您的应用程序中自行处理。您可以使用Apache POI解析Excel工作表。 – pjp 2009-08-18 09:31:07

0

鉴于您无法修改Excel电子表格,它看起来像被卡住了。问题是,Windows剪贴板不能识别浏览器能够接受来自粘贴的纯文本。正因为如此,它将它作为一个纯文本表格进行粘贴,该表格基本上就是excel向您呈现的数据的可视化表示。

如果您为页面构建了一个ActiveX组件,那么除了电子表格数据之外,我认为Excel工作表应该可以工作。纯粹的浏览器JavaScript实现不会做你需要的。