Tutorial: Incrustar información de tipos de los ensamblados de Microsoft Office (C# y Visual Basic)

Si se incrusta información de tipos en una aplicación que hace referencia a objetos COM, puede eliminar la necesidad de contar con un ensamblado de interoperabilidad primario (PIA). Además, la información de tipos incrustada permite conseguir la independencia de la versión para la aplicación. Es decir, el programa se puede escribir de forma que use los tipos de distintas versiones de una biblioteca COM sin requerir un ensamblado de interoperabilidad primario específico para cada versión. Este es un escenario común para las aplicaciones que usan objetos de las bibliotecas de Microsoft Office. Al incrustar información de tipos se permite que la misma compilación de un programa funcione con versiones distintas de Microsoft Office en equipos diferentes sin necesidad de volver a implementar el programa o el ensamblado de interoperabilidad primario para cada versión de Microsoft Office.

En este tutorial realizará las tareas siguientes:

  • Crear una aplicación que usa objetos de automatización de Microsoft Office e incrusta la información de tipos de las bibliotecas COM de Microsoft Office.

  • Publicar y ejecutar la aplicación con varias versiones de Microsoft Office sin un ensamblado de interoperabilidad primario.

Nota

Es posible que su equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio incluidos en las instrucciones siguientes. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos. Para obtener más información, vea Valores de configuración de Visual Studio.

Requisitos previos

En este tutorial se requiere lo siguiente:

  • Un equipo que tenga instalados Visual Studio y Microsoft Excel.

  • Un equipo que tenga instalados .NET Framework 4 y una versión distinta de Excel.

Para crear una aplicación que funciona con varias versiones de Microsoft Office

  1. Inicie Visual Studio en un equipo donde esté instalado Excel.

  2. En el menú Archivo, elija Nuevo y haga clic en Proyecto.

  3. En el cuadro de diálogo Nuevo proyecto, en el recuadro Tipos de proyecto, asegúrese de haber seleccionado Windows. En el recuadro Plantillas, seleccione Aplicación de consola. En el cuadro Nombre, escriba CreateExcelWorkbook y haga clic en Aceptar. Se crea el nuevo proyecto.

  4. Si usa Visual Basic, haga clic con el botón secundario del mouse en el proyecto CreateExcelWorkbook y, a continuación, haga clic en Propiedades. Haga clic en la ficha Referencias. Haga clic en el botón Agregar. Si usa Visual C#, en el Explorador de soluciones, haga clic con el botón secundario en la carpeta Referencias y, a continuación, haga clic en Agregar referencia.

  5. En la pestaña .NET, haga clic en la versión más reciente de Microsoft.Office.Interop.Excel. Por ejemplo, Microsoft.Office.Interop.Excel 14.0.0.0. Haga clic en Aceptar.

  6. En la lista de referencias para el proyecto CreateExcelWorkbook, seleccione la referencia a Microsoft.Office.Interop.Excel que agregó en el paso anterior. En la ventana Propiedades, asegúrese de que la propiedad Embed Interop Types esté establecida en True.

    Nota

    La aplicación creada en este tutorial se ejecuta con distintas versiones de Microsoft Office debido a la información de tipos de interoperabilidad incrustada. Si la propiedad Embed Interop Types está establecida en False, debe incluir un ensamblado de interoperabilidad primario para cada versión de Microsoft Office con la que se ejecutará la aplicación.

  7. Si usa Visual Basic, haga doble clic en el archivo Module1.vb. Si usa Visual C#, haga doble clic en el archivo Program.cs. Reemplace el código del archivo por el código siguiente.

    Imports Excel = Microsoft.Office.Interop.Excel
    
    Module Module1
    
        Sub Main()
            Dim values = {4, 6, 18, 2, 1, 76, 0, 3, 11}
    
            CreateWorkbook(values, "C:\SampleFolder\SampleWorkbook.xls")
        End Sub
    
        Sub CreateWorkbook(ByVal values As Integer(), ByVal filePath As String)
            Dim excelApp As Excel.Application = Nothing
            Dim wkbk As Excel.Workbook
            Dim sheet As Excel.Worksheet
    
            Try
                ' Start Excel and create a workbook and worksheet.
                excelApp = New Excel.Application
                wkbk = excelApp.Workbooks.Add()
                sheet = CType(wkbk.Sheets.Add(), Excel.Worksheet)
                sheet.Name = "Sample Worksheet"
    
                ' Write a column of values.
                For i = 1 To values.Length - 1
                    sheet.Cells(i, 1) = values(i)
                Next
    
                ' Suppress any alerts and save the file. Create the directory 
                ' if it does not exist. Overwrite the file if it exists.
                excelApp.DisplayAlerts = False
                Dim folderPath = My.Computer.FileSystem.GetParentPath(filePath)
                If Not My.Computer.FileSystem.DirectoryExists(folderPath) Then
                    My.Computer.FileSystem.CreateDirectory(folderPath)
                End If
                wkbk.SaveAs(filePath)
        Catch
    
            Finally
                sheet = Nothing
                wkbk = Nothing
    
                ' Close Excel.
                excelApp.Quit()
                excelApp = Nothing
            End Try
    
        End Sub
    End Module
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    using Excel = Microsoft.Office.Interop.Excel;
    
    namespace CreateExcelWorkbook
    {
        class Program
        {
            static void Main(string[] args)
            {
                int[] values = {4, 6, 18, 2, 1, 76, 0, 3, 11};
    
                CreateWorkbook(values, @"C:\SampleFolder\SampleWorkbook.xls");
            }
    
            static void CreateWorkbook(int[] values, string filePath)
            {
                Excel.Application excelApp = null;
                Excel.Workbook wkbk;
                Excel.Worksheet sheet;
    
                try
                {
                        // Start Excel and create a workbook and worksheet.
                        excelApp = new Excel.Application();
                        wkbk = excelApp.Workbooks.Add();
                        sheet = wkbk.Sheets.Add() as Excel.Worksheet;
                        sheet.Name = "Sample Worksheet";
    
                        // Write a column of values.
                        for (int i = 1; i < values.Length; i++)
                        {
                            sheet.Cells[i, 1] = values[i];
                        }
    
                        // Suppress any alerts and save the file. Create the directory 
                        // if it does not exist. Overwrite the file if it exists.
                        excelApp.DisplayAlerts = false;
                        string folderPath = Path.GetDirectoryName(filePath);
                        if (!Directory.Exists(folderPath))
                        {
                            Directory.CreateDirectory(folderPath);
                        }
                        wkbk.SaveAs(filePath);
                }
                catch
                {
                }
                finally
                {
                    sheet = null;
                    wkbk = null;
    
                    // Close Excel.
                    excelApp.Quit();
                    excelApp = null;
                }
            }
        }
    }
    
  8. Guarde el proyecto.

  9. Presione CTRL+F5 para compilar y ejecutar el proyecto. Compruebe que se ha creado un libro de Excel en la ubicación especificada en el código de ejemplo: C:\SampleFolder\SampleWorkbook.xls.

Para publicar la aplicación en un equipo en el que se ha instalado otra versión de Microsoft Office

  1. Abra el proyecto creado por este tutorial en Visual Studio.

  2. En el menú Generar, haga clic en Publicar CreateExcelWorkbook. Siga los pasos del Asistente para publicación para crear una versión de la aplicación que se pueda instalar. Para obtener más información, vea Asistente para publicación.

  3. Instale la aplicación en un equipo donde se hayan instalado .NET Framework 4 y otra versión de Excel.

  4. Una vez finalizada la instalación, ejecute el programa instalado.

  5. Compruebe que se ha creado un libro de Excel en la ubicación especificada en el código de ejemplo: C:\SampleFolder\SampleWorkbook.xls.

Vea también

Tareas

Tutorial: Incrustar los tipos de los ensamblados administrados (C# y Visual Basic)

Referencia

/link (Visual Basic)

/link (Opciones del compilador de C#)