ServerDocument.Document Property

Gets the byte array of an in-memory document that is loaded into the ServerDocument.

Namespace:  Microsoft.VisualStudio.Tools.Applications
Assembly:  Microsoft.VisualStudio.Tools.Applications.ServerDocument (in Microsoft.VisualStudio.Tools.Applications.ServerDocument.dll)

public byte[] Document { get; }

Property Value

Type: System.Byte[]
The byte array of an in-memory document that is loaded into the ServerDocument.


The document has been closed.

This property returns a filled byte array if the ServerDocument was created by using the ServerDocument(Byte[], String) constructor that has a byte array parameter, or the ServerDocument(Stream, String) constructor that has a Stream parameter. Otherwise, this property returns an empty byte array.

Using this property enables you to make changes to a document and send it to a client without writing the document to disk.

The following code example uses the ServerDocument(Byte[], String) constructor to create a new ServerDocument from a byte array that contains an Excel workbook with the .xlsx file name extension. The example then uses the Document property to display the number of bytes in the document.

This example requires:

  • A console application project or some other non-Office project.

  • References to the following assemblies:

    • Microsoft.VisualStudio.Tools.Applications.ServerDocument.dll and Microsoft.VisualStudio.Tools.Applications.Runtime.dll (if the project targets the .NET Framework 4 or the .NET Framework 4.5).


    • Microsoft.VisualStudio.Tools.Applications.ServerDocument.v10.0.dll and Microsoft.VisualStudio.Tools.Applications.Runtime.v9.0.dll (if the project targets the .NET Framework 3.5).

  • Imports (for Visual Basic) or using (for C#) statements for Microsoft.VisualStudio.Tools.Applications and Microsoft.VisualStudio.Tools.Applications.Runtime namespaces at the top of your code file.

private void CreateServerDocumentFromByteArray(string documentPath)
    int runtimeVersion = 0;
    ServerDocument serverDocument1 = null;
    System.IO.FileStream stream = null;

        runtimeVersion = ServerDocument.GetCustomizationVersion(documentPath);
        if (runtimeVersion == 3)
            // Read the file into a byte array.
            stream = new System.IO.FileStream(
                documentPath, System.IO.FileMode.Open,
            byte[] buffer = new byte[(int)stream.Length];
            stream.Read(buffer, 0, (int)buffer.Length);

            // Display the number of bytes in the document.
            serverDocument1 = new ServerDocument(buffer,
            MessageBox.Show("The Document property contains " +
                serverDocument1.Document.Length.ToString() +
                " bytes.");
    catch (System.IO.FileNotFoundException)
        System.Windows.Forms.MessageBox.Show("The specified document does not exist.");
    catch (UnknownCustomizationFileException)
        System.Windows.Forms.MessageBox.Show("The specified document has a file " +
            "extension that is not supported by Visual Studio Tools for Office.");
        if (serverDocument1 != null)
        if (stream != null)