Compartilhar via


Como: Inserir dados em documentos sem gravação em disco

Se aplica a

As informações contidas neste tópico se aplicam apenas às especificado Ferramentas do Visual Studio para o Office projetos e as versões do Microsoft Office.

Tipo de Projeto

  • Projetos de nível de documento

Versão do Microsoft Office

  • Microsoft Office Sistema de 2007

  • Microsoft Office 2003

For more information, see Recursos disponíveis pelo aplicativo e o tipo de projeto.

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

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 do Arquivo e, em seguida, executar a sua 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

Este exemplo requer:

  • Um projeto ASP.NET que contém o código de exemplo.

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

Configuração backup o projeto do ASP.NET

O projeto ASP.NET deve ter uma referência a um dos seguintes assemblies:

  • Para o Word 2007, Adicionar uma referência a Microsoft.VisualStudio.Tools.Applications.ServerDocument.v9.0.dll.

  • Para o Word 2003, Adicionar uma referência a Microsoft.VisualStudio.Tools.Applications.Tempo de execução.dll.

O arquivo de código para o qual você copiar o exemplo de código deve ter um Imports (no Visual Basic) ou instrução de using (em C#) para um dos namespaces a seguir:

Consulte também

Tarefas

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

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

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

Conceitos

Acessando dados em documentos no servidor