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 publicar la aplicación en un equipo en el que se ha instalado otra versión 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 tu equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las siguientes instrucciones. 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, consulte Personalizar la configuración de desarrollo en 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
Inicie Visual Studio en un equipo donde esté instalado Excel.
en el menú Archivo, elija Nuevo, Proyecto.
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, escriba CreateExcelWorkbook y elija el botón Aceptar. Se crea el nuevo proyecto.
Si usa Visual Basic, abra el menú contextual 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 menú contextual de la carpeta Referencias y después elija Agregar referencia.
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 .
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.
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; } } } }
Guarde el proyecto.
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
Abra el proyecto creado por este tutorial en Visual Studio.
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).
Instale la aplicación en un equipo donde se haya instalado .NET Framework 4 y otra versión de Excel.
Una vez finalizada la instalación, ejecute el programa instalado.
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)