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

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

复制和粘贴(选择datagrid中的数据和Excel中的ctrl-v后的ctrl-c)几乎可以正常工作。

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

谢谢,


AFAIK影响剪贴板行为的唯一数据网格属性是“ClipBoardCopyMode”,并且非常“使用标题或不”。 除非我脱离底座,否则如果您想要格式化,您必须自己将其放在剪贴板中。 但说实话,作为一个用户,我不想格式化。 当我复制一些东西时,它使我疯狂,然后必须重新格式化它们以匹配我目前使用的格式。 我更愿意粘贴数据,然后如果我想按照显示的格式进行格式化,请执行此操作。 如果你打算自己推出,我建议使用Excel剪贴板格式,以便用户可以“PasteSpecial”值,如果他们想。 这可能会给你一些想法:http://www.codeguru.com/vb/gen/vb_misc/samples/article.php/c6393


我有同样的问题,并使用Control.DrawToBitmap向ClipBoard添加一个位图。 首先使用一个DataObject,用DataGridView中的'标准'剪贴板内容填充,然后添加位图,然后将数据对象推送到剪贴板,用户可以使用'粘贴特殊'功能并在位图或纯文本之间进行选择。 就像是:

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)  

也有可能创建一个RTF输出,但这是更多的工作,因为RTF代码非常复杂。 但是,有一些代码示例可以找到。

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

链接地址: http://www.djcxy.com/p/62251.html

上一篇: DataGridView Copy Paste (with style, background color, ...)

下一篇: ASP.NET Application Gets Slower Over Time