Exportar datagridview con imagenes

Publicado en 'Programación' por joel094, 6 Dic 2015.





  1. joel094

    joel094 Miembro frecuente

    Registro:
    14 Oct 2012
    Mensajes:
    213
    Likes:
    7




    Buen día como dice el titulo es algo que estoy tratando de hacer tengo un datagridview con datos e imágenes en ciertas columnas y quiero exportarlo a excel pero al exportarlo a excel como lo hago ahora me sale systembyte tengo las imágenes guardadas en el sql en formato IMAGE osea es un varbynary si alguien me puede ayudar le agradecería les dejo mi código actual que uso para exportar a excel.

    Código:
    private void ExportarDataGridViewExcel(DataGridView grd)
            {
                SaveFileDialog fichero = new SaveFileDialog();
                fichero.Filter = "Excel (*.xls)|*.xls";
                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 = 1; i <= grd.Columns.Count; i++)
                    {
                        hoja_trabajo.Cells[1, i] = grd.Columns[i - 1].HeaderText;
                    }
                    for (int i = 0; i < grd.Rows.Count; i++)
                    {
                        for (int j = 0; j < grd.Columns.Count; j++)
                        {
                            hoja_trabajo.Cells[i + 2, j + 1] = grd.Rows[i].Cells[j].Value.ToString();
                        }
                    }
    
                    libros_trabajo.SaveAs(fichero.FileName,
                        Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal);
                    libros_trabajo.Close(true);
                    aplicacion.Quit();
                    MessageBox.Show("Exportado");
                }
            }
     


  2. gnox

    gnox Miembro maestro

    Registro:
    3 Ene 2013
    Mensajes:
    793
    Likes:
    252
  3. joel094

    joel094 Miembro frecuente

    Registro:
    14 Oct 2012
    Mensajes:
    213
    Likes:
    7
  4. gnox

    gnox Miembro maestro

    Registro:
    3 Ene 2013
    Mensajes:
    793
    Likes:
    252
    Pues todas las rutas de disco siempre son fijas, si buscas grabar desde un objeto de memoria tendrías que usar el método Paste del WorkSheet a partir de un Bitmap de los bytes de la imagen, el inconveniente es la RAM, esta es menor que memoria de disco y la conversión del tipo de imagen a Bitmap se elevaría el consumo de RAM al considerar la descompresión de otros formatos comprimidos (jpg, png) a bitmap, sumado a que tienes que meter todas las imágenes antes de cerrar el excel, llegarías mas rápido a quedarte sin memoria ram a quedarte sin espacio de disco.
     
Etiquetas: