Gewusst wie: Einfügen von Daten in Dokumente, ohne auf den Datenträger zu schreiben
Sie können Daten in das Dokument einer Office-Lösung 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.
Betrifft: Die Informationen in diesem Thema betreffen Projekte auf Dokumentebene für Word 2007 und Word 2010. Weitere Informationen finden Sie unter Verfügbare Funktionen nach Office-Anwendung und Projekttyp.
So fügen Sie Daten in ein Dokument ein
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(); } }
Ü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();
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. Das Projekt muss die folgende Konfiguration aufweisen:
Es muss einen Verweis auf die Assembly Microsoft.VisualStudio.Tools.Applications.ServerDocument.dll (wenn das Projekt auf .NET Framework 4 abzielt) oder auf die Assembly Microsoft.VisualStudio.Tools.Applications.ServerDocument.v10.0.dll enthalten (wenn das Projekt auf .NET Framework 3.5 abzielt).
Die Codedatei, in die Sie das Codebeispiel kopieren, muss eine Imports-Anweisung (in Visual Basic) bzw. eine using-Anweisung (in C#) für den Microsoft.VisualStudio.Tools.Applications-Namespace aufweisen.
Ein Microsoft Office Word-Dokument mit dem Namen WordApplication3.doc, das über einen Datencache verfügt und sich im Ordner C:\Dokumente befindet.
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