¿Cómo cargar texto de un documento de MS Word en C # (.NET)?
Pregunta
¿Cómo puedo cargar el documento de MS Word (.doc y .docx) en la memoria (variable) sin hacer esto ?:
wordApp.Documents.Open
No quiero abrir MS Word, solo quiero ese texto dentro.
Me diste una respuesta para DOCX, pero ¿qué pasa con DOC? Quiero una solución gratuita y de alto rendimiento, no abrir 12.000 instancias de Word para procesarlas todas. :( Aspose es un producto comercial, y 900 $ es demasiado para lo que hago.
Solución
Puede usar wordconv.exe, que forma parte del paquete de compatibilidad de Office para convertir de doc a docx.
Simplemente llama al comando así: " C: \ Archivos de programa \ Microsoft Office \ Office12 \ wordconv.exe " -oice -nme InputFile OutputFile
No estoy seguro de si necesita la palabra instalada para que se ejecute, pero funciona. Lo uso localmente como un comando de shell de Windows para convertir archivos antiguos de Office al formato 2007 cuando lo desee.
Otros consejos
Para documentos de Word con formato docx, encontré este interesante artículo en The CodeProject
Uso de DocxToText para extraer texto de archivos DOCX
En el artículo, el autor trata de eliminar solo las palabras.
Para sus documentos de Word (no docx) que no sean las API de Office y (en segundo plano) generando una instancia de Word, puede intentar desenterrar uno de los muchos convertidores Doc2Docx diferentes en el mercado y luego aplicar el proceso anterior para ambos.
Si está tratando con docx, puede hacer esto sin hacer ninguna interoperabilidad con Word .docx archivo en realidad un ZIP contiene un archivo XML, puede leer el XML Por favor, consulte los enlaces de abajo
http: / /conceptdev.blogspot.com/2007/03/open-docx-using-c-to-extract-text-for.html
Recientemente hice una investigación sobre este tema. Resulta que para poder manipular los archivos de Word programáticamente sin abrir Word, se necesitan herramientas muy caras.
Hay un artículo sobre proyecto de código sobre la manipulación de Word , puede que Encuentralo útil. El autor construye un contenedor C # COM para tratar con las llamadas a Word. Sin embargo, parece que realmente abre la aplicación de palabras.
Esta publicación termina en Los nuevos foros parecen prometedores también. Incluye bastantes llamadas PInvoked para la extracción de texto.
Tal vez si pudieras encontrar una manera de mantener oculta la ventana sería aceptable.
Aspose tiene un componente para leer, modificar y escribir documentos de Word. Aquí está el enlace del producto: Aspose.Words para .NET y Java
Aspose.Words habilita .NET y Java Aplicaciones para leer, modificar y escribir. Documentos de Word® sin utilizar Microsoft Word®. Aspose.Words soporta una amplia gama de características que incluyen Creación de documentos, contenidos y Manipulación de formato, correo potente. fusionar habilidades, soporte integral de DOC, OOXML, RTF, WordprocessingML, Formatos HTML, OpenDocument y PDF. Aspose.Words es verdaderamente el más asequible, más rápido y rico en funciones Componente de Word en el mercado.
Con docxtemplater , puede obtener fácilmente el texto completo de una palabra (solo funciona con docx).
Aquí está el código (Node.JS)
DocxTemplater = require ('docxtemplater');
doc = new DocxTemplater (). loadFromFile (" input.docx ");
result = doc.getFullText ();
Esto es solo tres líneas de código y no depende de ninguna instancia de palabra (todo JS)
No quiero ser un antagonista, pero ¿por qué?
He extraído datos de Documentos de Word en servidores Linux usando Word2X o AbiWord y, dependiendo del número y la variedad de documentos, siempre habrá errores con la extracción. Es peor cuanto más viñetas, saltos de página, secciones de documentos y otros " especiales " características que hay.
Entiendo que ahora hay opciones para automatizar OpenOffice para procesar documentos, pero mi consejo es que, si puede, solo use Word para procesar documentos de Word.