Como: Inserir dados em documentos sem gravar em disco

Você pode inserir dados em um documento de solução do Office na memória, para que os dados não são gravados no disco rígido. Se você precisar enviar um documento para um usuário como uma matriz de bytes usando o protocolo HTTP, você pode usar esse recurso para modificar os dados diretamente na matriz de bytes em vez de criar um arquivo temporário modificar os dados.

Aplicável a: As informações neste tópico se aplicam a projetos de nível de documento para Word 2007 e Word 2010. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.

Para inserir dados em um documento.

  1. Carregar o documento na memória como uma matriz de bytes.

    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. Passar a matriz de bytes para o modelo de objeto do lado do servidor em vez de um nome de arquivo e, em seguida, executar a manipulação de dados.

    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. Enviar o documento para o usuário final e fechar o 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();
        }
    }
    

Compilando o código

This example requires:

  • Um ASP.NET projeto que contém o código de exemplo. O projeto deve ter a seguinte configuração:

    • Ele deve ter uma referência ao assembly Microsoft.VisualStudio.Tools.Applications.ServerDocument.dll (se os destinos do projeto de .NET Framework 4) ou o conjunto de Microsoft.VisualStudio.Tools.Applications.ServerDocument.v10.0.dll (se os destinos do projeto a.NET Framework 3.5).

    • O arquivo de código no qual você copiar o exemplo de código deve ter um Imports (em Visual Basic) ou using (em C#) a instrução para o Microsoft.VisualStudio.Tools.Applications namespace.

  • Um documento do Word de Microsoft Office chamado WordApplication3.doc que tem um cache de dados e está localizado na pasta C:\Documents.

Consulte também

Tarefas

Como: Inserir dados em uma pasta de trabalho em um servidor

Como: Recuperar dados em cache a partir de uma pasta de trabalho em um servidor

Como: Alterar dados em uma pasta de trabalho em um servidor de cache

Conceitos

Acesso a dados em documentos no servidor