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:
So erstellen Sie eine Anwendung, die mit mehreren Versionen von Microsoft Office kompatibel ist.
So veröffentlichen Sie die Anwendung auf einem Computer, auf dem eine andere Version von Microsoft Office installiert ist.
Hinweis |
---|
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 zweiter 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.
Wählen Sie im Menü Datei die Optionsfolge Neu, Projekt aus.
Ü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.Im Feld geben Sie NameCreateExcelWorkbook ein und klicken Sie dann auf die Schaltfläche OK aus.Das neue Projekt wird erstellt.
Wenn Sie Visual Basic verwenden, öffnen Sie das Kontextmenü für das CreateExcelWorkbook-Projekt und wählen Sie dann Eigenschaften aus.Wählen Sie die Registerkarte aus. VerweiseWählen Sie die Schaltfläche Hinzufügen aus.Wenn Sie Visual C#, in Projektmappen-Explorer verwenden, öffnen Sie das Kontextmenü für den Ordner Verweise und wählen Sie dann Verweis hinzufügen aus.
Klicken Sie auf der Registerkarte .NET die aktuellste Version von Microsoft.Office.Interop.Excel aus.Beispiel: Microsoft.Office.Interop.Excel 14.0.0.0..Klicken Sie auf die Schaltfläche 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.
Hinweis 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, öffnen Sie die Datei Module1.vb.Wenn Sie Visual C# verwenden, öffnen Sie 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. ' 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; } } } }
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ü Build wählen Sie CreateExcelWorkbook veröffentlichen aus.Führen Sie die Schritte des Webpublishing-Assistenten aus, um eine installierbare Version der Anwendung zu erstellen.Weitere Informationen finden Sie unter Veröffentlichungsassistent (Office-Entwicklung in Visual Studio).
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)