我正在将DataGrid复制到剪贴板,以便将其粘贴到例如Excel同时保持其格式:
MyDataGrid.SelectAllCells();
MyDataGrid.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;
ApplicationCommands.Copy.Execute(null, MyDataGrid);
这非常好用。但是,我需要添加字符串“MyDataGridTitle”。如果粘贴到Excel,它应该只是站在DataGrid上面。
我尝试了各种方法(例如使用DataObject)和折磨谷歌,但没有成功。我会感谢提示,提示或回答!
答案 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
方法来改进此代码。