剪贴板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电子表格…
谢谢
您可以先将剪贴板的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);