¿Cómo puedo formar un documento de Word usando un flujo de bytes?

Tengo un flujo de bytes que en realidad (si se coloca correctamente) formará un archivo de Word válido. Necesito convertir este flujo en un archivo de Word sin escribirlo en el disco. Tomo el flujo original de la tabla de la base de datos de SQL Server:

ID Name FileData ---------------------------------------- 1 Word1 292jf2jf2ofm29fj29fj29fj29f2jf29efj29fj2f9 (actual file data) 

el campo FileData lleva los datos.

 Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application(); Microsoft.Office.Interop.Word.Document doc = new Microsoft.Office.Interop.Word.Document(); doc = word.Documents.Open(@"C:\SampleText.doc"); doc.Activate(); 

El código anterior se abre y llena un archivo de Word del sistema de archivos, no quiero eso, quiero definir un nuevo Microsoft.Office.Interop.Word.Document , pero quiero llenar su contenido manualmente desde la secuencia de bytes.

Después de obtener el documento de Word en memoria, quiero hacer un análisis de las palabras clave.

¿Algunas ideas?

  1. Crear un sistema de archivos en memoria, hay controladores para eso.
  2. Dale a word una ruta a una ruta del servidor ftp (u otra cosa) que luego uses para enviar los datos.

Una cosa importante a tener en cuenta: el almacenamiento de archivos en una base de datos generalmente no es un buen diseño.

Podrías ver cómo Sharepoint resuelve esto. Han creado una interfaz web para los documentos almacenados en su base de datos.

No es tan difícil crear o incrustar un servidor web en su aplicación que pueda servir páginas a Word. Ni siquiera tienes que usar los puertos estándar.

Probablemente no haya ninguna forma directa de hacer esto. Encontré un par de soluciones buscándolo:

  • Use el SDK de OpenOffice para manipular el documento en lugar de interoperar con Word
  • Escriba los datos en el portapapeles, y luego desde el Portapapeles a Word

No sé si esto lo hace por usted, pero aparentemente la API no proporciona lo que está buscando (desafortunadamente).