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
Versión de Microsoft Office
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
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
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:
Para Word 2007, agregue una instrucción Imports o using para el espacio de nombres Microsoft.VisualStudio.Tools.Applications.
Para Word 2003, agregue una instrucción Imports o using para el espacio de nombres Microsoft.VisualStudio.Tools.Applications.Runtime.
Nota: Visual Studio Tools para Office proporciona versiones diferentes de la clase ServerDocument y las clases de datos almacenados en memoria caché para 2007 System y 2003 System. Para obtener más información, consulte Administrar documentos en un servidor mediante la clase ServerDocument.
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