Compartir a través de


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

Actualización: noviembre 2007

Se aplica a

La información de este tema sólo se aplica a los proyectos y versiones especificados de Visual Studio Tools para Office de Microsoft Office.

Tipo de proyecto

  • Proyectos de nivel de documento

Versión de Microsoft Office

  • Microsoft Office System 2007

  • Microsoft Office 2003

Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto.

Puede insertar datos en un documento de solución de Visual Studio Tools para 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.

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

Para este ejemplo se necesita:

  • Un proyecto de ASP.NET que contenga el código de ejemplo.

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

Establecer el proyecto ASP.NET

El proyecto ASP.NET debe tener una referencia a uno de los ensamblados siguientes:

  • Para Word 2007, agregue una referencia a Microsoft.VisualStudio.Tools.Applications.ServerDocument.v9.0.dll.

  • Para Word 2003, agregue una referencia a Microsoft.VisualStudio.Tools.Applications.Runtime.dll.

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 uno de los espacios de nombres siguientes:

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