Пошаговое руководство. Внедрение данных о типе из сборок для приложений 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

  1. На компьютере с установленным приложением Excel запустите Visual Studio.

  2. В меню Файл выберите пункт Создать, а затем команду Проект.

  3. Убедитесь, что в диалоговом окне Новый проект в области Типы проектов выбран пункт Windows. В области Шаблоны выберите пункт Консольное приложение. В поле Имя введите CreateExcelWorkbook и нажмите кнопку ОК. Новый проект создан.

  4. Если используется Visual Basic, щелкните правой кнопкой мыши проект CreateExcelWorkbook и выберите пункт Свойства. Перейдите на вкладку Ссылки. Нажмите кнопку Добавить. Если используется Visual C#, в обозревателе решений щелкните правой кнопкой мыши папку Ссылки и выберите команду Добавить ссылку.

  5. На вкладке .NET щелкните самую последнюю версию сборки взаимодействия Microsoft.Office.Interop.Excel. Например, Microsoft.Office.Interop.Excel 14.0.0.0. Нажмите кнопку ОК.

  6. В списке ссылок для проекта CreateExcelWorkbook выберите ссылку для сборки взаимодействия Microsoft.Office.Interop.Excel, которая была добавлена на предыдущем шаге. Убедитесь, что в окне Свойства свойство Embed Interop Types имеет значение True.

    Примечание

    Приложение, созданное в ходе данного пошагового руководства, запускается с разными версиями приложения Microsoft Office, поскольку содержит внедренные данные о типе сборки взаимодействия.Если свойство Embed Interop Types имеет значение False, необходимо добавить основную сборку взаимодействия для каждой версии приложения Microsoft Office, с которой будет запускаться приложение.

  7. Если используется 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;
                }
            }
        }
    }
    
  8. Сохраните проект.

  9. Нажмите сочетание клавиш CTRL+F5, чтобы построить и запустить проект. Убедитесь, что книга Excel создана в расположении, указанном в примере кода: "C:\SampleFolder\SampleWorkbook.xls".

Публикация приложения на компьютере, на котором установлены разные версии приложения Microsoft Office

  1. Откройте проект, созданный в ходе этого пошагового руководства в Visual Studio.

  2. В меню Построение выберите команду Опубликовать CreateExcelWorkbook. Чтобы создать устанавливаемую версию приложения, следуйте указаниям мастера публикации. Дополнительные сведения см. в разделе мастер публикации.

  3. Установите приложение на компьютере с .NET Framework 4 и разными версиями Excel.

  4. После завершения установки запустите установленную программу.

  5. Убедитесь, что книга Excel создана в расположении, указанном в примере кода: "C:\SampleFolder\SampleWorkbook.xls".

См. также

Задачи

Пошаговое руководство. Внедрение данных о типах из управляемых сборок (C# и Visual Basic)

Ссылки

/link (Visual Basic)

/link (параметры компилятора C#)