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

Aktualisiert: November 2007

Betrifft

Die Informationen in diesem Thema gelten nur für die angegebenen Projekte und Versionen von Visual Studio Tools for Office von Microsoft Office.

Projekttyp

  • Projekte auf Dokumentebene

Microsoft Office-Version

  • 2007 Microsoft Office System

  • Microsoft Office 2003

Weitere Informationen hierzu finden Sie unter Verfügbare Features nach Anwendung und Projekttyp.

Sie können Daten in ein Visual Studio Tools for Office-Projektmappendokument im Arbeitsspeicher einfügen und auf diese Weise vermeiden, dass die Daten auf die Festplatte geschrieben werden. Wenn Sie ein Dokument als Bytearray über das HTTP-Protokoll an einen Benutzer senden müssen, können Sie dieses Feature zum direkten Ändern der Daten im Bytearray verwenden und müssen hierfür keine temporäre Datei erstellen.

So fügen Sie Daten in ein Dokument ein

  1. Laden Sie das Dokument als Bytearray in den Arbeitsspeicher.

    Dim name As String = "C:\Documents\WordApplication3.doc"
    Dim fileStream As System.IO.FileStream = Nothing
    Dim bytes() As Byte = Nothing
    
    Try
        fileStream = New System.IO.FileStream( _
            name, System.IO.FileMode.Open, System.IO.FileAccess.Read)
        ReDim bytes(fileStream.Length)
        fileStream.Read(bytes, 0, fileStream.Length)
    
    Finally
        If Not fileStream Is Nothing Then
            fileStream.Close()
        End If
    End Try
    
    string name = @"C:\Documents\WordApplication3.doc";
    System.IO.FileStream fileStream = null;
    byte[] bytes = null;
    
    try
    {
        fileStream = new System.IO.FileStream(
            name, System.IO.FileMode.Open, System.IO.FileAccess.Read);
        bytes = new byte[(int)fileStream.Length];
        fileStream.Read(bytes, 0, (int)fileStream.Length);
    }
    finally
    {
        if (fileStream != null)
        {
            fileStream.Close();
        }
    }
    
  2. Übergeben Sie das Bytearray statt eines Dateinamens an das serverseitige Objektmodell, und bearbeiten Sie dann die Daten.

    Dim sd1 As ServerDocument = Nothing
    Try
        sd1 = New ServerDocument(bytes, name)
    
        ' Your data manipulation code goes here. 
    
        sd1.Save()
    
    ServerDocument sd1 = null;
    try
    {
        sd1 = new ServerDocument(bytes, name);
    
        // Your data manipulation code goes here. 
    
        sd1.Save();
    
  3. Senden Sie das Dokument an den Endbenutzer, und schließen Sie das ServerDocument.

        ' If you have a Word document, use the MIME string:
        Response.ContentType = "application/msword"
    
        ' If you have an Excel workbook, use the MIME string:
        'Response.ContentType = "application/vnd.ms-excel"
    
        Response.AddHeader("Content-disposition", "filename=" + name)
        Response.BinaryWrite(sd1.Document)
    
    Finally
        If Not sd1 Is Nothing Then
            sd1.Close()
        End If
    End Try
    
        // If you have a Word document, use the MIME string:
        Response.ContentType = "application/msword";
    
        // If you have an Excel workbook, use the MIME string:
        //Response.ContentType = "application/vnd.ms-excel";
    
        Response.AddHeader("Content-disposition", "filename=" + name);
        Response.BinaryWrite(sd1.Document);
    }
    finally
    {
        if (sd1 != null)
        {
            sd1.Close();
        }
    }
    

Kompilieren des Codes

Für dieses Beispiel ist Folgendes erforderlich:

  • Ein ASP.NET-Projekt, das den Beispielcode enthält.

  • Ein Microsoft Office Word-Dokument mit dem Namen WordApplication3.doc, das über einen Datencache verfügt und sich im Ordner C:\Dokumente befindet.

Einrichten des ASP.NET-Projekts

Das ASP.NET-Projekt muss über einen Verweis auf eine der folgenden Assemblys verfügen:

  • Fügen Sie für Word 2007 einen Verweis auf Microsoft.VisualStudio.Tools.Applications.ServerDocument.v9.0.dll hinzu.

  • Fügen Sie für Word 2003 einen Verweis auf Microsoft.VisualStudio.Tools.Applications.Runtime.dll hinzu.

Die Codedatei, in die Sie das Codebeispiel kopieren, muss eine Imports-Anweisung (in Visual Basic) bzw. eine using-Anweisung (in C#) für einen der folgenden Namespaces aufweisen:

Siehe auch

Aufgaben

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

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