Мне удалось установить цвета с помощью измененной версии кода, найденного здесь .Сначала я изменил CopyHtmlToClipBoard () на открытый статический метод void и поместил его в класс Extension.Затем, при вызове кода, я установил переменную var для каждого цвета ячеек, а затем изменил инструкцию html.AppendFormat (), включив в нее передаваемый цвет.Вот копия используемого кода:
public static void CopyHtmlToClipBoard(string html)
{
Encoding enc = Encoding.UTF8;
string begin = "Version:0.9\r\nStartHTML:{0:000000}\r\nEndHTML:{1:000000}"
+ "\r\nStartFragment:{2:000000}\r\nEndFragment:{3:000000}\r\n";
string html_begin = "<html>\r\n<head>\r\n"
+ "<meta http-equiv=\"Content-Type\""
+ " content=\"text/html; charset=" + enc.WebName + "\">\r\n"
+ "<title>HTML clipboard</title>\r\n</head>\r\n<body>\r\n"
+ "<!--StartFragment-->";
string html_end = "<!--EndFragment-->\r\n</body>\r\n</html>\r\n";
string begin_sample = String.Format(begin, 0, 0, 0, 0);
int count_begin = enc.GetByteCount(begin_sample);
int count_html_begin = enc.GetByteCount(html_begin);
int count_html = enc.GetByteCount(html);
int count_html_end = enc.GetByteCount(html_end);
string html_total = String.Format(
begin
, count_begin
, count_begin + count_html_begin + count_html + count_html_end
, count_begin + count_html_begin
, count_begin + count_html_begin + count_html
) + html_begin + html + html_end;
DataObject obj = new DataObject();
obj.SetData(DataFormats.Html, new MemoryStream(
enc.GetBytes(html_total)));
Clipboard.SetDataObject(obj, true);
}
private void copyAlltoClipboard()
{
var DataGridView1Counts = DataGridView1.Rows.Count;
StringBuilder html = new StringBuilder();
html.Append("<table>");
if (DataGridView1Counts > 0)
{
//sets headers
html.Append("<tr>");
html.Append("<th> Name1 </th>");
html.Append("<th> Name2 </th>");
html.Append("<th> Name3 </th>");
html.Append("<th> Name4 </th>");
html.Append("<th> Name5 </th>");
foreach (DataGridViewRow row in DataGridView1.Rows)
{
html.Append("<tr>");
foreach (DataGridViewCell cell in row.Cells)
{
var cellcolor = cell.Style.BackColor;
html.AppendFormat("<td bgcolor = " + cellcolor.Name + ">{0}</td>", cell.Value);
}
html.Append("</tr>");
}
}
html.Append("</table>");
Extensions.CopyHtmlToClipBoard(html.ToString());
}