Compartir a través de


Cómo: Insertar datos en documentos sin escribir en el disco

Puede insertar datos en un documento de solución de Office en memoria, de manera que los datos no se escriban en el disco duro. Si necesita enviar un documento a un usuario como una matriz de bytes mediante el protocolo HTTP, puede utilizar esta característica para modificar los datos directamente en la matriz de bytes, en lugar de crear un archivo temporal en el que modificar los datos.

Se aplica a: la información de este tema se aplica a los proyectos de nivel de documento para Word 2007 y Word 2010. Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto de Office.

Para insertar datos en un documento

  1. Cargue el documento en la memoria como una 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. Pase la matriz de bytes al modelo de objetos del lado servidor en lugar de un nombre de archivo y, a continuación, lleve a cabo la manipulación de datos.

    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. Envíe el documento al usuario final y cierre 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();
        }
    }
    

Compilar el código

Este ejemplo requiere:

  • Un proyecto de ASP.NET que contenga el código de ejemplo. El proyecto debe tener la siguiente configuración:

    • Debe tener una referencia al ensamblado Microsoft.VisualStudio.Tools.Applications.ServerDocument.dll (si el proyecto tiene como destino .NET Framework 4) o al ensamblado Microsoft.VisualStudio.Tools.Applications.ServerDocument.v10.0.dll (si el proyecto tiene como destino .NET Framework 3.5).

    • El archivo de código en el que copie el código de ejemplo debe tener una instrucción Imports (en Visual Basic) o using (en C#) para el espacio de nombres Microsoft.VisualStudio.Tools.Applications.

  • Un documento de Microsoft Office Word denominado WordApplication3.doc que tenga una caché de datos y esté guardado en la carpeta C:\Documents.

Vea también

Tareas

Cómo: Insertar datos en un libro ubicado en un servidor

Cómo: Recuperar los datos almacenados en la memoria caché de un libro ubicado en un servidor

Cómo: Cambiar los datos almacenados en caché en un libro ubicado en un servidor

Conceptos

Acceso a datos de documentos en el servidor