Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: C# Windows Forms
How can I copy also the color of the cell in datagridview when copying and pasting rows to excel sheet. As of now I can only copy the cell values to excel.
Posted 15-Sep-12 8:17am
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

That information is stored in the range:
http://msdn.microsoft.com/en-us/library/4zs9xy29%28v=vs.80%29.aspx[^]
 

And is set like this:
rng.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
 
I think you could get it directly with a solidcolor brush, or from this:
Excel.Range r = (Excel.Range)m_objRange[2, 2];
System.Drawing.Color col = System.Drawing.ColorTranslator.FromOle((int) r.Interior.Color);
  Permalink  
v2
Comments
Al Yambo at 15-Sep-12 13:37pm
   
When I copy a set of rows from the datagridview how do you include color information into the clipboard copy
Kenneth Haugland at 15-Sep-12 13:51pm
   
http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.clipboardcopymode.aspx ?
Al Yambo at 29-Oct-12 13:08pm
   
Hi Kenneth. Thanks but I do not think the code here copies the formatting.
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 3

Found the answer at this link. Thanks to the author and to the person who pointed me to it. The data table or datagridview has to be represented as a html table. The class "Test" is the key to this code.
 
http://blog.tcx.be/2005/08/copying-html-fragment-to-clipboard.html[^]
 
The example given by the author for copying and formatting a data table does not work although it has the right idea.
 
Here is code I wrote and tested for copying and formatting a datagridview. Take note that I did some formatting by coloring the cells green.
 
StringBuilder html = new StringBuilder();
html.Append("<table>");
for (int i = 0; i <= dataGridView1.RowCount - 1; i++)
{
html.Append("<tr>");
for (int j = 0; j <= dataGridView1.ColumnCount - 1; j++)
{
DataGridViewCell cell = dataGridView1[j, i];
html.AppendFormat("<td bgcolor=green>{0}</td>", cell.Value);
 
}
html.Append("</tr>");
}
html.Append("</table>");
Test.CopyHtmlToClipBoard(html.ToString()); 
  Permalink  
v2
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 2

Maybe you can set color when exporting data like this:
columnFormat.FillStyle.Foreground = Spire.DataExport.XLS.CellColor.Pink
DataExport component is used
  Permalink  
Comments
Al Yambo at 29-Oct-12 13:09pm
   
Thank you for your response. Will try it

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 George Jonsson 175
1 Kornfeld Eliyahu Peter 169
2 Zoltán Zörgő 139
3 PIEBALDconsult 130
4 OriginalGriff 120
0 OriginalGriff 6,165
1 DamithSL 4,658
2 Maciej Los 4,107
3 Kornfeld Eliyahu Peter 3,649
4 Sergey Alexandrovich Kryukov 3,342


Advertise | Privacy | Mobile
Web03 | 2.8.141220.1 | Last Updated 29 Oct 2012
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100