演练:嵌入 Microsoft Office 程序集中的类型信息(C# 和 Visual Basic)
如果您在引用 COM 对象的应用程序中嵌入类型信息,则可以不需要主互操作程序集 (PIA)。 此外,利用嵌入的类型信息可实现应用程序的版本中立性。 即,可以将程序编写为使用多个 COM 库版本中的多个类型,而不是每个版本都需要一个特定的 PIA。 对于使用 Microsoft Office 库中对象的应用程序,这是一种常用方案。 嵌入类型信息后,程序的同一个生成可以使用不同计算机上的不同 Microsoft Office 版本,而无需为 Microsoft Office 的每个版本重新部署该程序或 PIA。
在本演练中,您将执行以下任务:
创建一个这样的应用程序:使用 Microsoft Office 中的自动化对象,且嵌入 Microsoft Office COM 库中的类型信息。
在没有 PIA 的环境下,以多个 Microsoft Office 版本发布和运行该应用程序。
提示
对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您所使用的 Visual Studio 版本和您所使用的设置。有关更多信息,请参见 Visual Studio 设置。
系统必备
本演练需要如下内容:
安装有 Visual Studio 和 Microsoft Excel 的计算机。
安装有 .NET Framework 4 和另一 Excel 版本的计算机。
创建在多个 Microsoft Office 版本环境下工作的应用程序
在安装有 Excel 的计算机上,启动 Visual Studio。
在**“文件”菜单上指向“新建”,然后单击“项目”**。
在**“新建项目”对话框的“项目类型”窗格中,确保选中“Windows”。 在“模板”窗格中,选择“控制台应用程序”。 在“名称”框中,键入 CreateExcelWorkbook,然后单击“确定”**。 至此新项目创建完毕。
如果您使用的是 Visual Basic,请右击 CreateExcelWorkbook 项目,然后单击**“属性”。 单击“引用”选项卡。 单击“添加”按钮。 如果您使用的是 Visual C#,请在“解决方案资源管理器”中,右击“引用”文件夹,然后单击“添加引用”**。
在**“.NET”选项卡上,单击最新版本的 Microsoft.Office.Interop.Excel。 例如,“Microsoft.Office.Interop.Excel 14.0.0.0”。 单击“确定”**。
在 CreateExcelWorkbook 项目的引用列表中,选择上一步添加的 Microsoft.Office.Interop.Excel 引用。 在**“属性”**窗口中,确保 Embed Interop Types 属性已设置为 True。
提示
由于嵌入的互操作类型信息,本演练中创建的应用程序将以不同的 Microsoft Office 版本运行。 如果 Embed Interop Types 属性设置为 False,则必须为应用程序以后运行时使用的每个 Microsoft Office 版本包括一个 PIA。
如果您使用的是 Visual Basic,请双击 Module1.vb 文件。 如果您使用的是 Visual C#,请双击 Program.cs 文件。 用下面的代码替换文件中的代码。
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; } } } }
保存项目。
按 Ctrl+F5 生成和运行项目。 确认在代码示例中指定的位置处,已创建了 Excel 工作簿:C:\SampleFolder\SampleWorkbook.xls。
将应用程序发布到安装有另一个 Microsoft Office 版本的计算机
在 Visual Studio 中,打开此演练创建的项目。
在**“生成”菜单上,单击“发布 CreateExcelWorkbook”**。 按照发布向导的步骤进行操作,创建应用程序的可安装版本。 有关更多信息,请参见发布向导。
在安装有 .NET Framework 4 和另一个 Excel 版本的计算机上,安装该应用程序。
安装完成后,运行安装的程序。
确认在代码示例中指定的位置处,已创建了 Excel 工作簿:C:\SampleFolder\SampleWorkbook.xls。
请参见
任务
演练:嵌入托管程序集中的类型(C# 和 Visual Basic)