Insertar imagenes en Excel desde C#

13 10 2008

Siguiendo 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:

Entradas relacionadas

    Insertar en Excel desde C# con OleDb
    Reduccion de imágenes preservando el contenido
    Picasa Web Albums
    42
    Inferno

Actions

Informations

Se aprecian los comentarios

You can use these tags : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="">