Freigeben über


Gewusst wie: Einfügen von Daten in eine Arbeitsmappe auf einem Server

Sie können Daten in den Cache einer Microsoft Office Excel-Arbeitsmappe einfügen, die Bestandteil eines Office-Projekts auf Dokumentebene ist, ohne Excel ausführen zu müssen. Auf diese Weise können Sie Daten in Excel-Arbeitsmappen einfügen, die auf einem Server gespeichert sind.

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

Der Code zum Einfügen der Daten muss sich außerhalb der Projektassembly befinden, die dem Dokument zugeordnet ist, mit dem Sie arbeiten (z. B. in einer Konsolenanwendung oder in einer Windows Forms-Anwendung).

Schritt-für-Schritt-Anweisungen zum Verwenden des Codebeispiels in diesem Thema finden Sie unter Exemplarische Vorgehensweise: Einfügen von Daten in eine Arbeitsmappe auf einem Server.

Beispiel

Im folgenden Codebeispiel wird zuerst eine Instanz eines typisierten Datasets mit dem Namen AdventureWorksLTDataSet erstellt. Anschließend wird die Product-Tabelle im Dataset mithilfe eines Tabellenadapters ausgefüllt. Dann verwendet der Code die ServerDocument-Klasse, um auf eine Instanz desselben typisierten Datasets zuzugreifen, die in einer Excel-Arbeitsmappe zwischengespeichert ist, und schreibt mit der SerializeDataInstance-Methode die Daten aus dem lokalen Dataset in das zwischengespeicherte Dataset.

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

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
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;

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();
}

Kompilieren des Codes

Das Codebeispiel in diesem Thema ist für die Verwendung mit den folgenden Anwendungen gedacht:

  • Eine Konsolenanwendung mit Zugriff auf ein Klassenbibliotheksprojekt, das ein typisiertes Dataset definiert. Der Code wird in der Konsolenanwendung ausgeführt.

  • Eine Excel-Arbeitsmappe, die Teil einer Anpassung auf Dokumentebene für Excel ist. Die Arbeitsmappe verfügt über ein zwischengespeichertes DataSet mit dem Namen AdventureWorksLTDataSet, das Daten enthält.

Schritt-für-Schritt-Anweisungen zum Verwenden des Codes finden Sie unter Exemplarische Vorgehensweise: Einfügen von Daten in eine Arbeitsmappe auf einem Server.

Siehe auch

Aufgaben

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

Gewusst wie: Einfügen von Daten in Dokumente, ohne auf den Datenträger zu schreiben

Gewusst wie: Abrufen von zwischengespeicherten Daten aus einer Arbeitsmappe auf einem Server

Gewusst wie: Ändern zwischengespeicherter Daten in einer Arbeitsmappe auf einem Server

Konzepte

Zugreifen auf Daten in Dokumenten auf dem Server

DiffGrams (ADO.NET)