Пошаговое руководство. Внедрение данных о типе из сборок для приложений Microsoft Office (C# и Visual Basic)
Если в приложение, имеющее ссылки на COM-объекты, внедрены данные о типе, то можно исключить необходимость использования основной сборки взаимодействия (PIA). Кроме того, внедренные данные о типе позволяют создать приложение, не зависящее от версии. Это означает, что в программе можно использовать типы из нескольких версий библиотеки COM, т. е. необходимость использования конкретной основной сборки взаимодействия для каждой версии библиотеки COM отпадает. Это общий сценарий для приложений, использующих объекты из библиотек Microsoft Office. Внедрение данных о типе позволяет одному построению программы работать с разными версиями приложения Microsoft Office на разных компьютерах без необходимости повторного развертывания программы или основной сборки взаимодействия для каждой версии приложения Microsoft Office.
В данном пошаговом руководстве выполняются следующие задачи.
Создание приложения, которое использует объекты автоматизации из приложения Microsoft Office и встраивает данные о типе из библиотек COM приложений Microsoft Office.
Публикация и запуск приложения с несколькими версиями приложения Microsoft Office без основной сборки взаимодействия.
Примечание
На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio.
Обязательные компоненты
Необходимо выполнить следующие требования.
Компьютер, на котором установлен Visual Studio и Microsoft Excel.
Компьютер, на котором установлена .NET Framework 4 и разные версии приложения Microsoft 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, с которой будет запускаться приложение.
Если используется 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)