Come caricare il testo del documento MS Word in C # (.NET)?
Domanda
Come posso caricare il documento MS Word (.doc e .docx) in memoria (variabile) senza farlo ?:
wordApp.Documents.Open
Non voglio aprire MS Word, voglio solo quel testo dentro.
Mi hai dato una risposta per DOCX, ma per quanto riguarda DOC? Voglio una soluzione gratuita e ad alte prestazioni - non aprire 12.000 istanze di Word per elaborarle tutte. :( Aspose è un prodotto commerciale e 900 $ è troppo per quello che faccio.
Soluzione
Puoi usare wordconv.exe che fa parte del pacchetto di compatibilità di Office per convertire da doc a docx.
Basta chiamare il comando in questo modo: " C: \ Programmi \ Microsoft Office \ Office12 \ wordconv.exe " -oice -nme InputFile OutputFile
Non sono sicuro che sia necessario che Word sia installato per funzionare, ma funziona. Lo uso localmente come comando della shell di Windows per convertire i vecchi file di Office nel formato 2007 ogni volta che voglio.
Altri suggerimenti
Per i documenti Word in formato docx ho trovato questo interessante articolo su The CodeProject
Uso di DocxToText per estrarre testo da file DOCX
Nell'articolo l'autore discute di eliminare solo le parole stesse.
Per i tuoi Documenti Word (non docx) diversi dall'uso delle API di Office e (in background) che generano un'istanza di Word potresti provare a sborsare uno dei tanti convertitori Doc2Docx sul mercato e quindi applicare il sopra per entrambi.
Se hai a che fare con docx puoi farlo senza fare interoperabilità con Word Il file .docx in realtà un ZIP contiene un file XML, puoi leggere l'XML Si prega di fare riferimento ai collegamenti seguenti
http: / /conceptdev.blogspot.com/2007/03/open-docx-using-c-to-extract-text-for.html
Di recente ho svolto alcune ricerche su questo argomento. Si scopre che per essere in grado di manipolare i file di parole a livello di codice senza aprire la stessa parola, sono necessari strumenti molto costosi.
C'è un articolo su progetto di codice sulla manipolazione di Word , potresti lo trova utile. L'autore crea un wrapper COM C # per gestire le chiamate a Word. Sembra che in realtà apra la parola application però.
Questo post sopra a anche i forum neowin sembrano promettenti. Comprende alcune chiamate PInvoked ai fini dell'estrazione del testo.
Forse se potessi trovare un modo per tenere nascosta la finestra sarebbe accettabile.
Aspose ha un componente per leggere, modificare e scrivere documenti Word. Ecco il link del prodotto: Aspose.Words per .NET e Java
Aspose.Words abilita .NET e Java applicazioni da leggere, modificare e scrivere Documenti Word® senza utilizzo Microsoft Word®. Aspose.Words supporta una vasta gamma di funzionalità tra cui creazione di documenti, contenuti e manipolazione della formattazione, posta potente unisci abilità, supporto completo di DOC, OOXML, RTF, WordprocessingML, Formati HTML, OpenDocument e PDF. Aspose.Words è davvero il massimo economico, veloce e ricco di funzionalità Componente Word sul mercato.
Con docxtemplater , puoi facilmente ottenere il testo completo di una parola (funziona solo con docx).
Ecco il codice (Node.JS)
DocxTemplater = require ( 'docxtemplater');
doc = new DocxTemplater (). loadFromFile (" input.docx ");
risultato = doc.getFullText ();
Queste sono solo tre righe di codice e non dipendono da nessuna istanza di parola (tutto semplice JS)
Non intendo essere un antagonista, ma perché?
Ho estratto i dati da documenti Word su server Linux usando Word2X o AbiWord e, a seconda del numero e della varietà di documenti, ci saranno sempre errori con l'estrazione. È peggio ancora più punti elenco, interruzioni di pagina, sezioni del documento e altro "speciale" caratteristiche ci sono.
Comprendo che ora ci sono opzioni per automatizzare OpenOffice per elaborare i documenti, ma il mio consiglio è, se puoi, semplicemente usare Word per elaborare i documenti di Word.