如何修改复制到剪贴板的内容?

时间:2015-05-28 14:12:43

标签: c# wpf

我正在将DataGrid复制到剪贴板,以便将其粘贴到例如Excel同时保持其格式:

MyDataGrid.SelectAllCells();
MyDataGrid.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;
ApplicationCommands.Copy.Execute(null, MyDataGrid);

这非常好用。但是,我需要添加字符串“MyDataGridTitle”。如果粘贴到Excel,它应该只是站在DataGrid上面。

我尝试了各种方法(例如使用DataObject)和折磨谷歌,但没有成功。我会感谢提示,提示或回答!

1 个答案:

答案 0 :(得分:1)

这不是非常优雅的解决方案,但您可以尝试操纵DataGrid生成的html字符串(实际上当您粘贴Excel时,DataFormats.Html格式是使用的那个。)

这样的事情:

dg.SelectAllCells();
dg.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;
ApplicationCommands.Copy.Execute(null, dg);

string dataGridContent = (string)Clipboard.GetData(DataFormats.Html);
dataGridContent = dataGridContent.Replace("<TABLE>",
    String.Format("<TABLE><TR><TD colspan='{0}'>Your additional text<TD></TR>", dg.Columns.Count));

Clipboard.SetText(dataGridContent, TextDataFormat.Html);

当然,您可以使用正则表达式而不是Replace方法来改进此代码。