Freigeben über


Exemplarische Vorgehensweise: Einfügen von Daten in eine Arbeitsmappe auf einem Server

Diese exemplarische Vorgehensweise veranschaulicht, wie Sie mit der ServerDocument-Klasse Daten in ein Dataset im Cache einer Microsoft Office Excel-Arbeitsmappe einfügen können, ohne Excel zu starten.

Betrifft: Die Informationen in diesem Thema betreffen Projekte auf Dokumentebene für Excel 2013 und Excel 2010. Weitere Informationen finden Sie unter Verfügbare Funktionen nach Office-Anwendung und Projekttyp.

In dieser exemplarischen Vorgehensweise werden die folgenden Aufgaben veranschaulicht:

  • Definieren eines DataSets, das Daten aus der AdventureWorksLT-Datenbank enthält

  • Erstellen von Datasetinstanzen in einem Excel-Arbeitsmappenprojekt und einem Konsolenanwendungsprojekt

  • Erstellen eines ListObject, das an das Dataset in der Arbeitsmappe gebunden ist

  • Hinzufügen des Datasets in der Arbeitsmappe zum Datencache

  • Einfügen von Daten in das zwischengespeicherte Dataset durch Ausführen von Code in der Konsolenanwendung ohne Starten von Excel

Bei dieser exemplarischen Vorgehensweise wird davon ausgegangen, dass Sie den Code auf Ihrem Entwicklungscomputer ausführen. Sie können den hier demonstrierten Code jedoch auch auf einem Server verwenden, auf dem Excel nicht installiert ist.

HinweisHinweis

Auf Ihrem Computer werden möglicherweise andere Namen oder Speicherorte für die Benutzeroberflächenelemente von Visual Studio angezeigt als die in den folgenden Anweisungen aufgeführten.Die von Ihnen verwendete Visual Studio-Edition und die Einstellungen legen diese Elemente fest.Weitere Informationen finden Sie unter Visual Studio-Einstellungen.

Vorbereitungsmaßnahmen

Zum Durchführen dieser exemplarischen Vorgehensweise benötigen Sie die folgenden Komponenten:

-

Eine Version von Visual Studio 2012, die die Microsoft Office-Entwicklungstools einschließt. Weitere Informationen finden Sie unter [Konfigurieren eines Computers zum Entwickeln von Office-Lösungen](bb398242\(v=vs.110\).md).

Erstellen eines Klassenbibliotheksprojekts zur Definition eines Datasets

Um dasselbe Dataset in einem Excel-Arbeitsmappenprojekt und einem Konsolenanwendungsprojekt verwenden zu können, müssen Sie es in einer separaten Assembly definieren, auf die beide Projekte verweisen.Definieren Sie für diese exemplarische Vorgehensweise das Dataset in einem Klassenbibliotheksprojekt.

So erstellen Sie ein Klassenbibliotheks-Projekt

  1. Starten Sie Visual Studio.

  2. Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.

  3. Erweitern Sie im Vorlagenbereich Visual C# oder Visual Basic, und klicken Sie dann auf Windows.

  4. Wählen Sie in der Liste der Projektvorlagen Klassenbibliothek aus.

  5. Geben Sie im Feld Name Folgendes ein: AdventureWorksDataSet.

  6. Klicken Sie auf Durchsuchen, navigieren Sie zum Ordner %UserProfile%\Eigene Dateien (Windows XP und ältere Versionen) bzw. %UserProfile%\Dokumente (Windows Vista), und klicken Sie dann auf Ordner auswählen.

  7. Im Dialogfeld Neues Projekt muss das Kontrollkästchen Projektmappenverzeichnis erstellen deaktiviert sein.

  8. Klicken Sie auf OK.

    Visual Studio fügt das Projekt AdventureWorksDataSet dem Projektmappen-Explorer hinzu und öffnet die Codedatei Class1.cs oder Class1.vb.

  9. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Class1.cs bzw. auf Class1.vb, und klicken Sie dann auf Löschen.Diese Datei wird für diese exemplarische Vorgehensweise nicht benötigt.

Definieren eines Datasets im Klassenbibliotheksprojekt

Definieren Sie ein typisiertes DataSet, das Daten aus der AdventureWorksLT-Datenbank für SQL Server 2005 enthält.Zu einem späteren Zeitpunkt in dieser exemplarischen Vorgehensweise verweisen Sie von einem Excel-Arbeitsmappenprojekt und einem Konsolenanwendungsprojekt auf dieses DataSet.

Das Dataset ist ein typisiertes Dataset, das die Daten in der Product-Tabelle der AdventureWorksLT-Datenbank darstellt.Weitere Informationen zu typisierten Datasets finden Sie unter Arbeiten mit Datasets in Visual Studio.

So definieren Sie ein typisiertes Dataset im Klassenbibliotheksprojekt

  1. Klicken Sie im Projektmappen-Explorer auf das Projekt AdventureWorksDataSet.

  2. Wenn das Datenquellen nicht sichtbar ist, zeigen Sie sie durch, auf der Menüleiste auf und Ansicht auswählen, Weitere Fenster, Datenquellen.

  3. Wählen Sie Neue Datenquelle hinzufügen, um Assistent zum Konfigurieren von Datenquellen zu starten.

  4. Klicken Sie auf Datenbank und anschließend auf Weiter.

  5. Wenn eine Verbindung mit der AdventureWorksLT-Datenbank vorhanden ist, wählen Sie diese Verbindung aus, und klicken Sie auf Weiter.

    Klicken Sie andernfalls auf Neue Verbindung, und erstellen Sie die neue Verbindung im Dialogfeld Verbindung hinzufügen.Weitere Informationen hierzu finden Sie unter Exemplarische Vorgehensweise: Einfügen von Daten in eine Arbeitsmappe auf einem Server.

  6. Klicken Sie auf der Seite Save the Connection String to the Application Configuration File auf Next.

  7. Erweitern Sie auf der Seite Datenbankobjekte auswählen den Knoten Tabellen, und wählen Sie Product (SalesLT).

  8. Klicken Sie auf Fertig stellen.

    Die Datei AdventureWorksLTDataSet.xsd wird dem AdventureWorksDataSet-Projekt hinzugefügt.Diese Datei definiert die folgenden Elemente:

    • Ein typisiertes Dataset mit dem Namen AdventureWorksLTDataSet.Dieses Dataset stellt den Inhalt der Product-Tabelle in der AdventureWorksLT-Datenbank dar.

    • Ein TableAdapter mit dem Namen ProductTableAdapter.Dieser TableAdapter kann zum Lesen von Daten aus und zum Schreiben von Daten in AdventureWorksLTDataSet verwendet werden.Weitere Informationen finden Sie unter Übersicht über TableAdapters.

    Zu einem späteren Zeitpunkt in dieser exemplarischen Vorgehensweise verwenden Sie beide Objekte.

  9. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf AdventureWorksDataSet, und klicken Sie dann auf Erstellen.

    Überprüfen Sie, ob sich das Projekt fehlerfrei erstellen lässt.

Erstellen eines Excel-Arbeitsmappenprojekts

Erstellen Sie ein Excel-Arbeitsmappenprojekt für die Datenschnittstelle.Zu einem späteren Zeitpunkt der exemplarischen Vorgehensweise erstellen Sie ein ListObject zur Anzeige der Daten und fügen dem Datencache der Arbeitsmappe eine Instanz des Datasets hinzu.

So erstellen Sie das Excel-Arbeitsmappenprojekt

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf AdventureWorksDataSet, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Neues Projekt.

  2. Erweitern Sie im Vorlagenbereich den Visual C# oder Visual Basic, und erweitern Sie dann Office/SharePoint.

  3. unter dem erweiterten Knoten Office/SharePoint wählen Sie den Knoten Office-Add-Ins aus.

  4. In der Liste der Projektvorlagen, aktivieren Sie das Excel 2010-Arbeitsmappe oder Excel 2013-Arbeitsmappe Projekt aus.

  5. Geben Sie im Feld Name Folgendes ein: AdventureWorksReport.Ändern Sie den Speicherort nicht.

  6. Klicken Sie auf OK.

    Der Projekt-Assistent aus Visual Studio Tools for Office wird geöffnet.

  7. Stellen Sie sicher, dass die Option Neues Dokument erstellen ausgewählt ist, und klicken Sie auf OK.

    Visual Studio öffnet die Arbeitsmappe AdventureWorksReport im Designer und fügt dem Projektmappen-Explorer das Projekt AdventureWorksReport hinzu.

Hinzufügen des Datasets zu Datenquellen im Excel-Arbeitsmappenprojekt

Bevor Sie das Dataset in der Excel-Arbeitsmappe anzeigen können, müssen Sie es zunächst Datenquellen im Excel-Arbeitsmappenprojekt hinzufügen.

So fügen Sie das Dataset den Datenquellen im Excel-Arbeitsmappenprojekt hinzu

  1. Doppelklicken Sie im Projektmappen-Explorer unter dem Projekt AdventureWorksReport auf Sheet1.cs bzw. auf Sheet1.vb.

    Die Arbeitsmappe wird im Designer geöffnet.

  2. Klicken Sie im Menü Daten auf Neue Datenquelle hinzufügen.

    Der Assistent zum Konfigurieren von Datenquellen wird geöffnet.

  3. Klicken Sie auf Objekt und anschließend auf Weiter.

  4. Klicken Sie auf der Seite Objekt auswählen, an das Bindung hergestellt werden soll auf Verweis hinzufügen.

  5. Klicken Sie auf der Registerkarte Projekte auf AdventureWorksDataSet, und klicken Sie dann auf OK.

  6. Klicken Sie unter dem AdventureWorksDataSet-Namespace der AdventureWorksDataSet-Assembly auf AdventureWorksLTDataSet und dann auf Fertig stellen.

    Das Fenster Datenquellen wird geöffnet, und AdventureWorksLTDataSet wird der Liste der Datenquellen hinzugefügt.

Erstellen eines an eine Instanz des Datasets gebundenen ListObject-Steuerelements

Um das Dataset in der Arbeitsmappe anzuzeigen, erstellen Sie ein ListObject, das an eine Instanz des Datasets gebunden ist.Weitere Informationen zum Binden von Steuerelementen an Daten finden Sie unter Binden von Daten an Steuerelemente in Office-Projektmappen.

So erstellen Sie ein ListObject, das an eine Instanz des Datasets gebunden ist

  1. Erweitern Sie im Fenster Datenquellen unter AdventureWorksDataSet den Knoten AdventureWorksLTDataSet.

  2. Wählen Sie den Knoten Product, klicken Sie auf den Dropdownpfeil, und wählen Sie dann ListObject aus der Dropdownliste.

    Wenn der Dropdownpfeil nicht angezeigt wird, überprüfen Sie, ob die Arbeitsmappe im Designer geöffnet ist.

  3. Ziehen Sie die Tabelle Product zur Zelle A1.

    Ein ListObject-Steuerelement mit dem Namen productListObject wird im Arbeitsblatt beginnend mit Zelle A1 erstellt.Gleichzeitig werden dem Projekt ein Datasetobjekt mit dem Namen adventureWorksLTDataSet und eine BindingSource mit dem Namen productBindingSource hinzugefügt.Das ListObject ist an die BindingSource gebunden, die wiederum an das DataSet-Objekt gebunden ist.

Hinzufügen des Datasets zum Datencache

Um Code außerhalb des Excel-Arbeitsmappenprojekts für den Zugriff auf das Dataset in der Arbeitsmappe zu aktivieren, müssen Sie das Dataset zunächst dem Datencache hinzufügen.Weitere Informationen über den Datencache finden Sie unter Zwischengespeicherte Daten in Anpassungen auf Dokumentebene und unter Zwischenspeichern von Daten.

So fügen Sie das Dataset dem Datencache hinzu

  1. Klicken Sie im Designer auf adventureWorksLTDataSet.

  2. Legen Sie im Eigenschaftenfenster die Modifiers-Eigenschaft auf Public fest.

  3. Legen Sie die CacheInDocument-Eigenschaft auf True fest.

Checkpoint

Erstellen Sie das Excel-Arbeitsmappenprojekt, und führen Sie es aus, um sicherzustellen, dass es fehlerfrei kompiliert und ausgeführt wird.

So erstellen Sie das Projekt und führen es aus

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt AdventureWorksReport, wählen Sie Debuggen, und klicken Sie dann auf Neue Instanz starten.

    Das Projekt wird erstellt, und die Arbeitsmappe wird in Excel geöffnet.Das ListObject in Sheet1 ist leer, da das adventureWorksLTDataSet-Objekt im Datencache bisher keine Daten enthält.Im nächsten Abschnitt verwenden Sie eine Konsolenanwendung, um das adventureWorksLTDataSet-Objekt mit Daten aufzufüllen.

  2. Beenden Sie Excel.Speichern Sie die Änderungen nicht.

Erstellen eines Konsolenanwendungsprojekts

Erstellen Sie ein Konsolenanwendungsprojekt, das verwendet werden soll, um Daten in das zwischengespeicherte Dataset in der Arbeitsmappe zu einzufügen.

So erstellen Sie das Konsolenanwendungsprojekt

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf AdventureWorksDataSet, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Neues Projekt.

  2. Erweitern Sie im Bereich Projekttypen den Knoten Visual C# oder Visual Basic, und klicken Sie dann auf Windows.

  3. Wählen Sie im Bereich Vorlagen die Option Konsolenanwendung aus.

  4. Geben Sie im Feld Name die Zeichenfolge DataWriter ein.Ändern Sie den Speicherort nicht.

  5. Klicken Sie auf OK.

    Visual Studio fügt das Projekt DataWriter dem Projektmappen-Explorer hinzu und öffnet die Codedatei Program.cs bzw. Module1.vb.

Hinzufügen von Daten mit der Konsolenanwendung zum zwischengespeicherten Dataset

Verwenden Sie die ServerDocument-Klasse in der Konsolenanwendung, um das zwischengespeicherte Dataset in der Arbeitsmappe mit Daten aufzufüllen.

So fügen Sie Daten zum zwischengespeicherten Dataset hinzu

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt DataWriter, und klicken Sie dann auf Verweis hinzufügen.

  2. Klicken Sie auf der Registerkarte .NET ausgewähltes Microsoft.VisualStudio.Tools.Applications.ServerDocument.

  3. Klicken Sie auf OK.

  4. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt DataWriter, und klicken Sie dann auf Verweis hinzufügen.

  5. Wählen Sie auf der Registerkarte Projekte die Option AdventureWorksDataSet, und klicken Sie auf OK.

  6. Öffnen Sie die Datei Program.cs oder die Datei Module1.vb im Code-Editor.

  7. Fügen Sie die folgende using-Anweisung (für C#) bzw. die Imports-Anweisung (für Visual Basic) am Anfang der Codedatei hinzu.

    Imports Microsoft.VisualStudio.Tools.Applications
    
    using Microsoft.VisualStudio.Tools.Applications;
    
  8. Fügen Sie der Main-Methode folgenden Code hinzu:Mit diesem Code werden die folgenden Objekte deklariert:

    • Instanzen vom AdventureWorksLTDataSet-Typ und Instanzen vom ProductTableAdapter-Typ, die im AdventureWorksDataSet-Projekt definiert sind.

    • Der Pfad zur AdventureWorksReport-Arbeitsmappe im build-Ordner des AdventureWorksReport-Projekts.

    • Ein ServerDocument-Objekt für den Zugriff auf den Datencache der Arbeitsmappe.

      HinweisHinweis

      Im folgenden Code wird davon ausgegangen, dass Sie eine Arbeitsmappe mit der Erweiterung .xlsx verwenden.Wenn die Arbeitsmappe im Projekt eine andere Dateinamenerweiterung hat, ändern Sie den Pfad wie erforderlich.

    Dim productDataSet As New AdventureWorksDataSet.AdventureWorksLTDataSet()
    Dim productTableAdapter As _
        New AdventureWorksDataSet.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter()
    
    Dim workbookPath As String = System.Environment.GetFolderPath( _
        Environment.SpecialFolder.MyDocuments) & _
        "\AdventureWorksReport\bin\Debug\AdventureWorksReport.xlsx"
    Dim serverDocument1 As ServerDocument = Nothing
    
    AdventureWorksDataSet.AdventureWorksLTDataSet productDataSet = 
        new AdventureWorksDataSet.AdventureWorksLTDataSet();
    AdventureWorksDataSet.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter productTableAdapter =
        new AdventureWorksDataSet.AdventureWorksLTDataSetTableAdapters.ProductTableAdapter();
    
    string workbookPath = System.Environment.GetFolderPath(
        Environment.SpecialFolder.MyDocuments) +
        @"\AdventureWorksReport\bin\Debug\AdventureWorksReport.xlsx";
    ServerDocument serverDocument1 = null;
    
  9. Fügen Sie der Main-Methode den folgenden Code nach dem im vorherigen Schritt hinzugefügten Code hinzu.Mit diesem Code werden die folgenden Aufgaben ausgeführt:

    • Das typisierte Datasetobjekt wird mit dem Tabellenadapter aufgefüllt.

    • Er verwendet die CachedData-Eigenschaft der ServerDocument-Klasse, um auf das zwischengespeicherte Dataset in der Arbeitsmappe zuzugreifen.

    • Er verwendet die SerializeDataInstance-Methode, um das zwischengespeicherte Dataset mit Daten aus dem lokalen typisierten Dataset aufzufüllen.

    Try
        productTableAdapter.Fill(productDataSet.Product)
        Console.WriteLine("The local dataset is filled.")
    
        serverDocument1 = New ServerDocument(workbookPath)
        Dim dataHostItem1 As CachedDataHostItem = _
            serverDocument1.CachedData.HostItems("AdventureWorksReport.Sheet1")
        Dim dataItem1 As CachedDataItem = dataHostItem1.CachedData("AdventureWorksLTDataSet")
    
        ' Initialize the worksheet dataset with the local dataset.
        If dataItem1 IsNot Nothing Then
            dataItem1.SerializeDataInstance(productDataSet)
            serverDocument1.Save()
            Console.WriteLine("The data is saved to the data cache.")
        Else
            Console.WriteLine("The data object is not found in the data cache.")
        End If
    Catch ex As System.Data.SqlClient.SqlException
        Console.WriteLine(ex.Message)
    Catch ex As System.IO.FileNotFoundException
        Console.WriteLine("The specified workbook does not exist.")
    Finally
        If Not (serverDocument1 Is Nothing) Then
            serverDocument1.Close()
        End If
        Console.WriteLine(vbLf & vbLf & "Press Enter to close the application.")
        Console.ReadLine()
    End Try
    
    try
    {
        productTableAdapter.Fill(productDataSet.Product);
        Console.WriteLine("The local dataset is filled.");
    
        serverDocument1 = new ServerDocument(workbookPath);
        CachedDataHostItem dataHostItem1 =
            serverDocument1.CachedData.HostItems["AdventureWorksReport.Sheet1"];
        CachedDataItem dataItem1 = dataHostItem1.CachedData["adventureWorksLTDataSet"];
    
        // Initialize the worksheet dataset with the local dataset.
        if (dataItem1 != null)
        {
            dataItem1.SerializeDataInstance(productDataSet);
            serverDocument1.Save();
            Console.WriteLine("The data is saved to the data cache.");
            Console.ReadLine();
        }
        else
        {
            Console.WriteLine("The data object is not found in the data cache.");
        }
    }
    catch (System.Data.SqlClient.SqlException ex)
    {
        Console.WriteLine(ex.Message);
    }
    catch (System.IO.FileNotFoundException)
    {
        Console.WriteLine("The specified workbook does not exist.");
    }
    finally
    {
        if (serverDocument1 != null)
        {
            serverDocument1.Close();
        }
    
        Console.WriteLine("\n\nPress Enter to close the application.");
        Console.ReadLine();
    }
    
  10. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt DataWriter, zeigen Sie auf Debuggen, und klicken Sie dann auf Neue Instanz starten.

    Das Projekt wird erstellt, und die Konsolenanwendung zeigt mehrere Statusmeldungen an, wenn das lokale Dataset aufgefüllt wird und wenn die Anwendung die Daten in das zwischengespeicherte Dataset im Workbook speichert.Drücken Sie die Eingabetaste, um die Anwendung zu schließen.

Testen der Arbeitsmappe

Wenn Sie die Arbeitsmappe öffnen, zeigt das ListObject nun Daten an, die mit der Konsolenanwendung dem zwischengespeicherten Dataset hinzugefügt wurden.

So testen Sie die Arbeitsmappe

  1. Schließen Sie die AdventureWorksReport-Arbeitsmappe im Visual Studio-Designer, wenn sie immer noch geöffnet ist.

  2. Im Datei-Explorer öffnen Sie die AdventureWorksReport-Arbeitsmappe, die im Buildordner des AdventureWorksReport Projekts ist.Standardmäßig befindet sich der Buildordner an einem der folgenden Speicherorte:

    • %UserProfile%\Eigene Dateien\AdventureWorksReport\bin\Debug (Windows XP und früher)

    • %UserProfile%\Dokumente\AdventureWorksReport\bin\Debug (Windows Vista)

  3. Überprüfen Sie, dass das ListObject mit Daten aufgefüllt ist, nachdem Sie die Arbeitsmappe geöffnet haben.

Nächste Schritte

Mehr über das Arbeiten mit zwischengespeicherten Daten erfahren Sie in den folgenden Themen:

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Ändern zwischengespeicherter Daten in einer Arbeitsmappe auf einem Server

Konzepte

Herstellen einer Verbindung mit Daten in Windows Forms-Anwendungen