Exemplarische Vorgehensweise: Einbetten von Typinformationen aus Microsoft Office-Assemblys (C# und Visual Basic)
Wenn Sie Typinformationen in eine Anwendung einbetten, die auf COM-Objekte verweist, ist die Verwendung einer primären Interopassembly (PIA) nicht mehr erforderlich. Darüber hinaus wird die Anwendung durch die eingebetteten Typinformationen versionsunabhängig. Ihr Programm kann daher für Typen aus unterschiedlichen Versionen einer COM-Bibliothek geschrieben werden; eine versionsspezifische PIA ist nicht erforderlich. Dies ist ein allgemeines Szenario für Anwendungen, die Objekte aus Microsoft Office-Bibliotheken verwenden. Mithilfe von eingebetteten Typinformationen kann ein Build eines Programms verschiedene Versionen von Microsoft Office auf unterschiedlichen Computern verwenden, ohne dass das Programm oder die PIA für jede Version von Microsoft Office erneut bereitgestellt werden müssen.
Im Verlauf dieser exemplarischen Vorgehensweise führen Sie folgende Aufgaben aus:
Erstellen Sie eine Anwendung, die Automatisierungsobjekte von Microsoft Office verwendet und die Typinformationen aus den Microsoft Office-COM-Bibliotheken einbettet.
Veröffentlichen Sie die Anwendung und führen Sie sie mit mehreren Versionen von Microsoft Office ohne PIA aus.
Tipp
Ihr Computer zeigt möglicherweise für einige der Elemente der Visual Studio-Benutzeroberfläche in der folgenden Anleitung andere Namen oder Standorte an. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Visual Studio-Einstellungen.
Vorbereitungsmaßnahmen
Für diese exemplarische Vorgehensweise wird Folgendes vorausgesetzt:
Ein Computer, auf dem Visual Studio und Microsoft Excel installiert sind.
Ein Computer, auf dem .NET Framework 4 und eine andere Version von Excel installiert sind.
So erstellen Sie eine Anwendung, die mit mehreren Versionen von Microsoft Office kompatibel ist
Starten Sie Visual Studioauf einem Computer, auf dem Excel installiert ist.
Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.
Überprüfen Sie, ob im Dialogfeld Neues Projekt im Bereich Projekttypen der Eintrag Windows ausgewählt ist. Wählen Sie im Bereich Vorlagen die Option Konsolenanwendung aus. Geben Sie im Feld Name die Bezeichnung CreateExcelWorkbook ein, und klicken Sie dann auf OK. Das neue Projekt wird erstellt.
Wenn Sie Visual Basic verwenden, klicken Sie mit der rechten Maustaste auf das CreateExcelWorkbook-Projekt, und klicken Sie dann auf Eigenschaften. Klicken Sie auf die Registerkarte Verweise. Klicken Sie auf die Schaltfläche Hinzufügen. Wenn Sie Visual C# verwenden, klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Ordner Verweise und anschließend auf Verweis hinzufügen.
Klicken Sie auf der Registerkarte .NET auf die aktuellste Version von Microsoft.Office.Interop.Excel. Beispiel: Microsoft.Office.Interop.Excel 14.0.0.0.. Klicken Sie auf OK.
Wählen Sie in der Liste der Verweise für das CreateExcelWorkbook-Projekt den Verweis für Microsoft.Office.Interop.Excel aus, den Sie im vorherigen Schritt hinzugefügt haben. Vergewissern Sie sich, dass die Embed Interop Types-Eigenschaft im Eigenschaftenfenster auf True festgelegt ist.
Tipp
Die in dieser exemplarischen Vorgehensweise erstellte Anwendung kann aufgrund der eingebetteten Interop-Typinformationen mit verschiedenen Versionen von Microsoft Office ausgeführt werden. Wenn die Embed Interop Types-Eigenschaft auf False festgelegt ist, müssen Sie eine PIA für jede Version von Microsoft Office einschließen, mit der die Anwendung ausgeführt wird.
Wenn Sie Visual Basic verwenden, doppelklicken Sie auf die Datei "Module1.vb". Wenn Sie Visual C# verwenden, doppelklicken Sie auf die Datei "Program.cs". Ersetzen Sie den Code in der Datei durch den folgenden Code:
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; } } } }
Speichern Sie das Projekt.
Drücken Sie STRG+F5, um das Projekt zu erstellen und auszuführen. Überprüfen Sie, ob eine Excel-Arbeitsmappe an dem Speicherort erstellt wurde, der im Beispielcode angegebenen ist: C:\SampleFolder\SampleWorkbook.xls.
So veröffentlichen Sie die Anwendung auf einem Computer, auf dem eine andere Version von Microsoft Office installiert ist
Öffnen Sie das Projekt, das Sie in dieser exemplarischen Vorgehensweise erstellt haben, in Visual Studio.
Klicken Sie im Menü Erstellen auf CreateExcelWorkbook veröffentlichen. Führen Sie die Schritte des Webpublishing-Assistenten aus, um eine installierbare Version der Anwendung zu erstellen. Weitere Informationen finden Sie unter Webpublishing-Assistent.
Installieren Sie die Anwendung auf einem Computer, auf dem .NET Framework 4 und eine andere Version von Excel installiert sind.
Führen Sie das installierte Programm aus, sobald die Installation abgeschlossen ist.
Überprüfen Sie, ob eine Excel-Arbeitsmappe an dem Speicherort erstellt wurde, der im Beispielcode angegebenen ist: C:\SampleFolder\SampleWorkbook.xls.
Siehe auch
Aufgaben
Exemplarische Vorgehensweise: Einbetten von Typen aus verwalteten Assemblys (C# und Visual Basic)