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
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(); } }
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();
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