Выгружаются данные из dataGridView в Excel всё нормально при экспорте цвета проблема с белым цветом, все столбцы где есть белый цвет выгружаются черными.
Код выгрузки:
var app = new Microsoft.Office.Interop.Excel.Application { Visible = false };
var wb = app.Workbooks.Add(1);
var ws = (Worksheet)wb.Worksheets[1];
// changing the name of active sheet
ws.Name = "Лист1";
// storing header part in Excel
for (int i = 1; i < dataGridView1.Columns.Count + 1; i++)
{
ws.Cells[1, i] = dataGridView1.Columns[i - 1].HeaderText;
}
// storing Each row and column value to excel sheet
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
backgroundWorker1.ReportProgress(100 * i / dataGridView1.RowCount);
//var range = (Range) ws.Cells[i + 2, j + 1];
ws.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString();
// range.Interior.Color = ColorTranslator.ToOle(dataGridView1.Rows[i].DefaultCellStyle.BackColor);
ws.Cells[i + 2, j + 1].Interior.Color = ColorTranslator.ToOle(dataGridView1.Rows[i].DefaultCellStyle.BackColor);
}
}
// sizing the columns
ws.Cells.EntireColumn.AutoFit();
// save the application
wb.SaveAs("c:\\APPS\\Distanc.xlsx", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, MessageBox.Show(@"Файл сохранён в c:\APPS\Distanc.xlsx"));
// Exit from the application
app.Quit();
Если выгружать без цвета то всё нормально.
Стоит двойной буфер у dataGridView
public static void DoubleBuffered(this DataGridView dgv, bool setting)
{
var dgvType = dgv.GetType();
var pi = dgvType.GetProperty("DoubleBuffered", BindingFlags.Instance | BindingFlags.NonPublic );
pi.SetValue(dgv, setting, null);
}
VirtualMode = false
Прошу оказать помощь в решении проблемы.
UPD
Вот как отрисовывает, т.е при выгрузки из приложения цвет не видимых полей передаётся как RGB 0.0.0
Сборка персонального компьютера от Artline: умный выбор для современных пользователей