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

本文关键字:记事本 Excel 工作簿 剪贴板 | 更新日期: 2023-09-27 18:14:15

从我的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);
    

这是ok的记事本,但excel也检索"myunformattedtext"而不是wb

我试图使用一些数据格式与dataObj.SetData(wb)如dataObj.SetData(Dataformats . rtf,wb),但我测试所有可用的格式在Dataformats和格式我可以从ClipBoard.GetDataObject()使用粘贴从excel(26个可能的值),但没有积极的结果。

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

谢谢

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

您可以先将剪贴板的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);