Insertar imagenes en Excel desde C#
13 10 2008Siguiendo con los post sobre cachitos de código que te hacen las vida más fácil (y que por lo visto hacen que aumenten las visitas del blog) hoy voy a hablar sobre como insertar una imagen en una hoja de Excel desde C# .NET
Todos estos fragmentos de código que voy subiendo solucionan problemillas concretos con los que me topo en los proyectos en los que trabajo y sobre los cuales tampoco encuentro información relevante en Google.
Empecemos, escribo el código y lo comento:
1 2 3 4 5 6 7 8 9 10 11 12 | object oMissing = System.Reflection.Missing.Value; Application apl = new Excel.ApplicationClass(); Workbook libro = apl.Workbooks.Open(@"c:\temp\archivoexcel.xls", oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing); #region Insertar imagen en excel Excel.Worksheet sheet = (Excel.Worksheet)libro.Sheets[1]; System.Drawing.Image logo1 = System.Drawing.Image.FromFile(@"c:\temp\logoAena.png"); sheet.Shapes.AddPicture(@"c:\temp\logoAena.png", MsoTriState.msoFalse, MsoTriState.msoCTrue, 1f, 1f, logo1.Width, logo1.Height); #endregion libro.SaveAs(@"c:\temp\excel.xls", Excel.XlFileFormat.xlExcel9795, null, null, false, false, Excel.XlSaveAsAccessMode.xlNoChange, Excel.XlSaveConflictResolution.xlLocalSessionChanges, false, null, null, 0); |
Vamos a ver línea por línea que hace cada cosa
2 3 4 | Application apl = new Excel.ApplicationClass(); Workbook libro = apl.Workbooks.Open(@"c:\temp\archivoexcel.xls", oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing); |
Con estas lineas abrimos un archivo de Excel desde código, notaremos como se abre un proceso Excel.exe en el Administrador de Tareas, es necesario tener Excel Instalado e incluir la referencia al objeto COM: Excel Objects 11.0
7 8 9 | Excel.Worksheet sheet = (Excel.Worksheet)libro.Sheets[1]; System.Drawing.Image logo1 = System.Drawing.Image.FromFile(@"c:\temp\ArchivoImagen.png"); sheet.Shapes.AddPicture(@"c:\temp\logoAena.png", MsoTriState.msoFalse, MsoTriState.msoCTrue, 1f, 1f, logo1.Width, logo1.Height); |
Con esas líneas seleccionamos la primera hoja del libro que hemos abierto, luego cargamos una imagen en un objeto Image y con sheet.Shapes.AddPicture añadimos la imagen en las coordenadas 1,1 (ojo, no son celdas, son coordenadas en pixeles (y de tipo float)
12 | libro.SaveAs(@"c:\temp\excel.xls", Excel.XlFileFormat.xlExcel9795, null, null, false, false, Excel.XlSaveAsAccessMode.xlNoChange, Excel.XlSaveConflictResolution.xlLocalSessionChanges, false, null, null, 0); |
Con esa línea salvamos el archivo con el nombre que queramos y ya está, ya tenemos un excel con una imagen. No hace falta que el Excel esté vacío, podemos abrir un excel con contenido y poner la imagen donde queramos.
¿Te ha servido? Apoya este blog:







Recent Comments