DataGridView复制粘贴(带有样式,背景颜色…)

我有一个C#Windows窗体应用程序与DataGridView。

复制和粘贴(ctrl-c在selectdatagrid中的数据和Excel中的ctrl-v后)工作得很好。

问题是样式(如背景颜色)没有粘贴在Excel中,只有单元格的值。 我需要更改我的datagridview某处的属性或实现自定义代码?

谢谢,

AFAIK影响剪贴板行为的唯一数据网格属性是“ClipBoardCopyMode”,而且几乎是“使用标题或不”。 除非我没有基础,如果你想要格式化,你将不得不把它放在剪贴板上。 但说实话,作为一个用户,我不想格式化。 当我复制一些东西的时候,它使我疯狂,然后必须重新格式化它们以匹配我目前使用的格式。 我宁愿粘贴数据,然后如果我想要显示的格式,那么做。 如果你要推出自己的build议,我会build议使用Excel剪贴板格式,以便您的用户可以“PasteSpecial”值,如果他们想。 这可能会给你一些想法: http : //www.codeguru.com/vb/gen/vb_misc/samples/article.php/c6393

我有同样的问题,并使用Control.DrawToBitmap将位图添加到剪贴板。 首先使用DataObject,使用DataGridView中的“标准”剪贴板内容填充,然后添加位图,然后将数据对象推送到剪贴板,用户可以使用“粘贴特殊”function,并在位图或纯文本。 就像是:

 Dim data as New DataObject() Dim html As DataObject = DGV.GetClipboardContent() data.SetData(DataFormats.Html, html.GetData(DataFormats.Html)) ' create some rectangle, probably using DataGridView.Bounds Dim bitmap As New System.Drawing.Bitmap(rectangle.Width, rectangle.Height) DGV.DrawToBitmap(bitmap, rectangle) data.SetData(DataFormats.Bitmap, bitmap) 

也有可能创build一个RTF输出,但这是更多的工作,因为RTF代码是相当复杂的。 但是,有一些代码示例可以find。

而我只是偶然发现了这个使用XML输出的Excel和其他格式的例子 。