Выгрузка данных с цветом в Excel

223
12 сентября 2017, 06:45

Выгружаются данные из 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

READ ALSO
Русский язык в консоли Windows Mobile 5.0 (.net compact 3.5)

Русский язык в консоли Windows Mobile 5.0 (.net compact 3.5)

Нужно, чтобы в консоли выводились русские символы, но параметра OutputEncoding у класса Console нетуКак установить русский язык? Может нужно что-то...

312
анимация пунктира в svg

анимация пунктира в svg

Есть пунктир в svgАнимация должна идти в обе стороны до определенной точки, которая зависит от какого-то параметра (положение слайдера, введенное...

325
Проблема с записью в массив

Проблема с записью в массив

В логере все отображается, а в массив не записывается

238