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)



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