C sharp - Exportar DataGridView a Excel 2007

   
Vista:

Exportar DataGridView a Excel 2007

Publicado por Felipe ingsanchezfelipe@gmail.com (1 intervención) el 03/01/2018 18:24:56
Buen dia miembros de la web del programador, actualmente estoy trabajando en un pequeño proyecto en donde quiero exportar todos los datos de un DataGridView a un archivo de Excel, tengo casi todo resuelto el unico inconveniente es que no me exporta la ultima columna que corresponde a fechas y tampoco guarda todos los encabezados, he estado experimentando un poco con los valores pero sigo sin obtener el resultado que busco. Espero que alguien pueda apoyarme con esta situacion. Les anexo imagenes del DGV y del archivo Excel resultado, asi como tambien del codigo que estoy utilizando para exportar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
private void pictureBox1_Click(object sender, EventArgs e)
{
    try
    {
        SaveFileDialog fichero = new SaveFileDialog();
        fichero.Filter = "Excel (*.xls)|*.xls";
        fichero.FileName = "";
        if (fichero.ShowDialog() == DialogResult.OK)
        {
            Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel._Workbook libro = app.Workbooks.Add(Type.Missing);
            Microsoft.Office.Interop.Excel._Worksheet hoja = null;
            app.Visible = true;
            hoja = libro.Sheets["Hoja1"];
            hoja = libro.ActiveSheet;
 
            for (int i = 1; i < verSalidas.Rows.Count - 1; i++)
            {
                hoja.Cells[1, i] = verSalidas.Columns[i - 1].HeaderText;
            }
            for (int i = 0; i < verSalidas.Rows.Count - 1; i++)
            {
                for (int j = 0; j < verSalidas.Columns.Count - 1; j++)
                {
                    if (verSalidas.Rows[i].Cells[j].Value != null)
                    {
                        hoja.Cells[i + 2, j + 1] = verSalidas.Rows[i].Cells[j].Value.ToString();
                    }
                    else
                    {
                        hoja.Cells[i + 2, j + 1] = "";
                    }
                }
            }
            libro.SaveAs(fichero.FileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal);
            libro.Close(true);
            app.Quit();
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("el archivo no se pudo guardar debido a: " + ex.ToString());
    }
}
01
02
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Exportar DataGridView a Excel 2007

Publicado por Miguel (157 intervenciones) el 03/01/2018 20:46:12
i < verSalidas.Rows.Count - 1

Bueno, estás omitiendo la última fila... Quítale el -1.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Exportar DataGridView a Excel 2007

Publicado por Cristian Saavedra (11 intervenciones) el 04/01/2018 20:08:29
Estimado.

Primero que nada y como dijieron anteriormente en la linea de codigo
1
for (int i = 1; i < verSalidas.Rows.Count - 1; i++)
debes quitar el -1 que tienes en el rows.count ya que si estas recorriendo los datos cuando estes parado leyendo la posicion del dato este le descontara 1 y es por eso que tambien no te exporta la ultima fila con los datos.
Ahora lo que no me hace sentido tampoco es por que recorres la variable verSalida en 2 ocasiones, es una matriz bidimensional?
si es una lista de objetos o un resultado de un dataset solo debes recorrerlo con un simple for o foreach en su defectoque seria algo asi
1
foreach datarow row in verSalida.Rows
o en un for normal
1
for(int i = 0; i > verSalida.Rows.Count; i++)

Quedo atento a tus dudas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar