Как экспортировать Excel вместе с заголовками?

Со следующим кодом я могу экспортировать без проблем datagridview в специфическом средстве, но без headers. Чего мне не хватает, чтобы этого добиваться?

    public void ExportarDataGridViewExcel(DataGridView dataCWS)
    {
        try
        {
            SaveFileDialog fichero = new SaveFileDialog();
            fichero.Filter = "Excel (*.xls)|*.xls";
            fichero.FileName = "ArchivoExportado";
            if (fichero.ShowDialog() == DialogResult.OK)
            {
                Microsoft.Office.Interop.Excel.Application aplicacion;
                Microsoft.Office.Interop.Excel.Workbook libros_trabajo;
                Microsoft.Office.Interop.Excel.Worksheet hoja_trabajo;

                aplicacion = new Microsoft.Office.Interop.Excel.Application();
                libros_trabajo = aplicacion.Workbooks.Add();
                hoja_trabajo =
                    (Microsoft.Office.Interop.Excel.Worksheet)libros_trabajo.Worksheets.get_Item(1);

                for (int i = 0; i < dataCWS.Rows.Count - 1; i++)
                {
                    for (int j = 0; j < dataCWS.Columns.Count; j++)
                    {
                        if ((dataCWS.Rows[i].Cells[j].Value == null) == false)
                        {
                            hoja_trabajo.Cells[i + 1, j + 1] = dataCWS.Rows[i].Cells[j].Value.ToString();
                        }
                    }
                }
                libros_trabajo.SaveAs(fichero.FileName,
                    Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal);
                libros_trabajo.Close(true);
                aplicacion.Quit();
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Cannot import because: " + ex.ToString());
        }
            }
        }
    }
1
задан 03.01.2017, 17:51
0 ответов

Информация headers находится в коллекции колонн DataGridView, так что ты можешь делать нечто похожее, едва нагрузив Worksheet:

hoja_trabajo = (Microsoft.Office.Interop.Excel.Worksheet)libros_trabajo.Worksheets.get_Item(1);

for (int i = 0; i < dataCWS.ColumnCount; i++)
{
    hoja_trabajo.Cells[1, i + 1] = dataCWS.Columns[i].HeaderText;
}

Сейчас имей в виду, что контент ячеек начнет начиная с линии 2 и не 1.

3
ответ дан 03.12.2019, 17:53
  • 1
    Я помогаю тому, что ты поместил кода внутри for, но любопытно у меня не выходят все headers jaja. 15 колонн, которые есть у datagrid, в экспорте только мне не хватает они последние 4 headers. –  03.01.2017, 19:40

Ты мог бы менять твой цикл следующего способа:

int columnaIndice = 1;

            for (int i = 0; i < dataCWS.Rows.Count - 1; i++)
            {
                for (int j = 0; j < dataCWS.Columns.Count; j++)
                {
                    if(columnaIndice = 1)
                    {
                        var titulo = dataCWS.Columns[j].HeaderText;

                        // Lo asignas
                    }

                    if ((dataCWS.Rows[i].Cells[j].Value == null) == false)
                    {
                        hoja_trabajo.Cells[i + 1, j + 1] = dataCWS.Rows[i].Cells[j].Value.ToString();
                    }

                    columnaIndice++;
                }

                columnaIndice = 1;
            }
0
ответ дан 03.12.2019, 17:53
  • 1
    Пробуйте с этим циклом и продолжи быть равным, я не могу экспортировать headers. Что сможет быть? –  03.01.2017, 23:59

Теги

Похожие вопросы