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:

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

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

[!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 segundo equipo en el que se instalan .NET Framework 4 y otra versión 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ú de Archivo , elija Nuevo, proyecto.

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

  4. Si usa Visual Basic, abra el acceso directo del proyecto CreateExcelWorkbook y después elija Propiedades.Elija la pestaña Referencias.elija el botón de Agregar .Si usa Visual C#, en el Explorador de soluciones, abra el acceso directo de la carpeta Referencias y después elija Agregar referencia.

  5. En la pestaña .NET, elija la versión más reciente de Microsoft.Office.Interop.Excel.Por ejemplo, Microsoft.Office.Interop.Excel 14.0.0.0.elija el botón de 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, abra el archivo Module1.vb.Si usa Visual C#, abra 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.
                ' In the For loop, both the row index and array index start at 1.
                ' Therefore the value of 4 at array index 0 is not included.
                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.
                        // In the For loop, both the row index and array index start at 1.
                        // Therefore the value of 4 at array index 0 is not included.
                        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ú Compilar, elija 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 (Desarrollo de Office en Visual Studio).

  3. Instale la aplicación en un equipo donde se haya 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#)