剪贴板c#工作簿到Excel和记事本

从我的c#应用程序,我想添加字体的文本到剪贴板。 如果我把它粘贴到excel,我想看看它的格式,如果我把它粘贴到记事本,相同的结果显然没有字体。

问题 :

  • 如果我使用Microsoft.Office.Interop.Excel.Application并创build工作簿和工作表,我可以使用Clipboard.SetDataObject(wb)提供剪贴板,其中wb是我的工作簿:粘贴function工作到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)一些DataForms,但我testingDataFormats中的所有可用格式,也可以从ClipBoard.GetDataObject()使用粘贴从Excel中获取格式26个可能的值),但没有积极的结果。

有没有一个专门的Excel工作簿格式setdata? 我想如果答案是否定的,最好的解决办法是使用XML电子表格…

谢谢

您可以将剪贴板的DataObject设置为wb然后获取其正确的DataObject并从此处开始工作:

 Clipboard.SetDataObject(wb); DataObject dataObj=new DataObject(); foreach(string format in Clipboard.GetDataObject().GetFormats()) { // have a look of its current available Formats, and add anything you feel is necessary. // you may need RTF for word for example //this will work with excel 2003 (xls file): //if(format.Contains("Biff")) //for excel 2007 forwards (xlsx file) you may need to add HTML format: if(format==DataFormats.Html||format.Contains("Biff")) { dataObj.SetData(format, Clipboard.GetDataObject().GetData(format)); } } //you can set your text data by //dataObj.SetData(DataFormats.Text, "myunformattedtext"); Clipboard.SetDataObject(dataObj);