Пошаговое руководство. Внедрение данных о типе из сборок для приложений Microsoft Office (C# и Visual Basic)
Если в приложение, имеющее ссылки на COM-объекты, внедрены данные о типе, то можно исключить необходимость использования основной сборки взаимодействия (PIA). Кроме того, внедренные данные о типе позволяют создать приложение, не зависящее от версии. Это означает, что в программе можно использовать типы из нескольких версий библиотеки COM, т. е. необходимость использования конкретной основной сборки взаимодействия для каждой версии библиотеки COM отпадает. Это общий сценарий для приложений, использующих объекты из библиотек Microsoft Office. Внедрение данных о типе позволяет одному построению программы работать с разными версиями приложения Microsoft Office на разных компьютерах без необходимости повторного развертывания программы или основной сборки взаимодействия для каждой версии приложения Microsoft Office.
В данном пошаговом руководстве будут выполнены следующие задачи:
Публикация приложения на компьютере, на котором установлены разные версии приложения Microsoft Office
Публикация приложения на компьютере, на котором установлены разные версии приложения 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, с которой будет запускаться приложение.
Если используется 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. ' 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; } } } }
Сохраните проект.
Нажмите сочетание клавиш CTRL+F5, чтобы построить и запустить проект. Убедитесь, что книга Excel создана в расположении, указанном в примере кода: "C:\SampleFolder\SampleWorkbook.xls".
Публикация приложения на компьютере, на котором установлены разные версии приложения Microsoft Office
Откройте проект, созданный в ходе этого пошагового руководства в Visual Studio.
В меню Сборка выберите Опубликовать CreateExcelWorkbook. Чтобы создать устанавливаемую версию приложения, следуйте указаниям мастера публикации. Для получения дополнительной информации см. Мастер публикации (разработка для Office в Visual Studio).
Установите приложение на компьютере, на котором установлены .NET Framework 4 и другая версия Excel.
После завершения установки запустите установленную программу.
Убедитесь, что книга Excel создана в расположении, указанном в примере кода: "C:\SampleFolder\SampleWorkbook.xls".
См. также
Задачи
Пошаговое руководство. Внедрение данных о типах из управляемых сборок (C# и Visual Basic)