У меня была та же проблема, и я использовал Control.DrawToBitmap
для добавления растрового изображения в ClipBoard. Используя сначала объект DataObject, заполненный «стандартным» содержимым буфера обмена из DataGridView, затем добавляя растровое изображение, затем помещая объект DataObject в буфер обмена, пользователь может использовать функции «вставки специальных» и выбора между растровым изображением или простым текстом , Что-то вроде:
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 и других форматов.