Excel复制到剪贴板截断数据
Posted
技术标签:
【中文标题】Excel复制到剪贴板截断数据【英文标题】:Excel copy to clipboard truncating data 【发布时间】:2009-08-10 12:07:51 【问题描述】:我已经构建了一个网络应用程序,它有一个用于填充表格的粘贴按钮。数据最初是从 Excel 电子表格复制并粘贴到我的表单上。
问题是我只看到显示的数据,而不是基础值。例如,如果单元格的值为 12.223,并且单元格的格式仅显示 12.2,则 12.2 会进入剪贴板。
我在这里错过了一个技巧吗?有谁知道如何从剪贴板中提取全部数据?
编辑:似乎 Excel 在剪贴板上提供了 25 种不同的格式,包括“XML 电子表格”,它看起来包含我需要的实际信息。但是,浏览器中似乎只有文本版本可用。是否有 ActiveX 控件或类似的东西可以用来获取这些数据?
【问题讨论】:
你能发布一些代码来看看你是如何处理这个问题的吗? Excel 在导出为 CSV 时做同样的事情。它会丢弃任何未显示的内容。我想您不想将 Excel 复制到一个 word 文档中并获得大量小数。 @FJV:可能是 Ctrl+A、Ctrl+C、Alt-Tab、Ctrl+V :) 【参考方案1】:我能看到的唯一方法是敲出一些利用 Windows 窗体对象库的 VBA 代码。
我找到了一个使用剪贴板的代码示例
http://www.dailydoseofexcel.com/archives/2004/12/02/putting-text-into-the-windows-clipboard/
默认情况下,这只会复制单元格的可见文本。为了让它输出你需要改变的实际值
cell.Text
到
cell.Value
虽然如果你有日期,这可能会弄乱任何日期。
编辑:
实际上日期似乎可以复制
【讨论】:
谢谢。您知道 VBA 脚本可以挂接到 Ctrl-C 或右键单击并复制的方法吗?电子表格的用户为各种不同的公司工作,他们当前的解决方案非常简单。给他们一个新的副本图标不会太好! 如果您单击工具、宏、宏,突出显示宏并按选项,然后您可以将其分配给 Ctrl+c 组合。【参考方案2】:复制单元格后,右键单击并选择“特殊粘贴”,然后选择“粘贴”下的“值”选项。这将粘贴完整的值。
【讨论】:
问题是选择性粘贴似乎在其他应用程序中不可用。 我想您可以执行以下操作:复制 Excel 数据,将特殊粘贴到新工作表中,然后将其复制到剪贴板。【参考方案3】:鉴于您无法修改 excel 电子表格,您似乎陷入了困境。问题是 Windows 剪贴板无法将浏览器识别为能够接受粘贴中的纯文本以外的任何内容。因此,它会将其粘贴为纯文本表格,该表格基本上只是 excel 呈现给您的数据的可视化表示。
如果您为除了电子表格数据之外的页面构建了一个 ActiveX 组件,那么我认为 excel 粘贴应该可以工作。但是,纯浏览器 javascript 实现无法满足您的需求。
【讨论】:
【参考方案4】:如果您愿意使用额外的表格来包含格式化为复制的数据,您也可以执行以下操作
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 组合键。
【讨论】:
我无法在 Excel 方面做任何事情。它必须是浏览器解决方案。 如果您无法对 Excel/VBA 进行任何更改,那么您唯一的选择是允许用户上传工作表并在您的应用程序中自行处理。您可以使用 Apache POI 解析 Excel 工作表。以上是关于Excel复制到剪贴板截断数据的主要内容,如果未能解决你的问题,请参考以下文章