【发布时间】:2014-07-23 21:27:35
【问题描述】:
从我的 c# 应用程序中,我想将带有字体的文本添加到剪贴板。 如果我将它粘贴到 excel 中,我想用格式查看它,如果我将它粘贴到记事本,同样的结果显然没有字体。
问题:
如果我使用 Microsoft.Office.Interop.Excel.Application 并创建工作簿和工作表,我可以使用 Clipboard.SetDataObject(wb) 提供剪贴板,其中 wb 是我的工作簿:粘贴功能适用于 excel 但没有任何东西粘贴到记事本中。
-
如果我使用如下代码:
DataObject dataObj = new DataObject(); dataObj.SetData(wb); dataObj.SetData(DataFormats.Text, "myunformattedtext"); Clipboard.SetDataObject(dataObj);
记事本可以,但excel也可以检索“myunformattedtext”而不是wb
我尝试将一些数据格式与 dataObj.SetData(wb) 一起使用,例如 dataObj.SetData(DataFormats.Rtf,wb) 但我测试了 DataFormats 中的所有可用格式以及我可以使用粘贴从 ClipBoard.GetDataObject() 获得的格式来自 excel(26 个可能的值)但没有积极的结果。
setdata 是否有专用的 excel 工作簿格式?我想如果响应是否定的,最好的解决方案是使用 XML 电子表格...
谢谢
【问题讨论】:
-
呃?你覆盖剪贴板!您将 wb 写入它,然后是文本字符串...从格式化到未格式化的转换是在目标端而不是源端完成的。
-
你能做类似的事情吗:
Clipboard.SetDataObject(wb);Clipboard.SetDataObject(Clipboard.GetDataObject().SetData(DataFormats.Text, "myunformattedtext")); -
@cjb110 你的意思是当我调用两次 setdata 时?不,我不认为,因为如果我反转 dataObj.SetData(wb);和 dataObj.SetData(DataFormats.Text, "myunformattedtext");当我尝试粘贴时,剪贴板仍然包含 myunformattedtext。只是如果我多次调用 ClipBoard.setdata 或 Clipboard.Setdataobject 我会覆盖
-
@Bolu 此代码似乎不起作用,因为 SetData 返回 void 并且 SetDataObject 需要一个参数,是否缺少括号或逗号?如果您尝试连接剪贴板内容,我认为它不起作用,我相信使用不同格式多次调用 setdata 是这样做的方法