Vorrei caricare un file docx Word 2007 o superiore sul mio server Web e convertire il sommario in una semplice struttura xml. Fare questo sul desktop con VBA tradizionale sembra che sarebbe stato facile. Guardare i dati XML di WordprocessingML utilizzati per creare il file docx è fonte di confusione. C'è un modo (senza COM) per navigare nel documento in modo più orientato agli oggetti?Come posso interrogare un docx di Word in un'app ASP.NET?
risposta
Consiglio vivamente di esaminare lo Open XML SDK 2.0. È un CTP, ma l'ho trovato estremamente utile nella manipolazione dei file xmlx senza dover necessariamente occuparmi di COM. La documentazione è un po 'approssimativa, ma la cosa fondamentale da cercare è la classe DocumentFormat.OpenXml.Packaging.WordprocessingDocument. È possibile selezionare separatamente il documento .docx se si rinomina l'estensione in .zip e si scava nei file XML lì. Da ciò, sembra che un sommario sia contenuto in un tag "Documento strutturato" e che elementi come i titoli siano in un collegamento ipertestuale da lì. Mettendomi un po 'in giro, ho scoperto che qualcosa del genere dovrebbe funzionare (o almeno darti un punto di partenza).
WordprocessingDocument wordDoc = WordprocessingDocument.Open(Filename, false);
SdtBlock contents = wordDoc.MainDocumentPart.Document.Descendants<SdtBlock>().First();
List<string> contentList = new List<string>();
foreach (Hyperlink section in contents.Descendants<Hyperlink>())
{
contentList.Add(section.Descendants<Text>().First().Text);
}
Vedere XML Documents and Data come punto di partenza. In particolare, ti consigliamo di utilizzare LINQ in XML.
In generale, non si desidera utilizzare COM in un'applicazione .NET.
Ecco un post sul blog per interrogare i documenti Open XML WordprocessingML utilizzando LINQ in XML. Utilizzando il codice, è possibile scrivere una query come segue:
using (WordprocessingDocument doc =
WordprocessingDocument.Open(filename, false))
{
foreach (var p in doc.MainDocumentPart.Paragraphs())
{
Console.WriteLine("Style: {0} Text: >{1}<",
p.StyleName.PadRight(16), p.Text);
foreach (var c in p.Comments())
Console.WriteLine(
" Comment Author:{0} Text:>{1}<",
c.Author, c.Text);
}
}
post del blog: Open XML SDK and LINQ to XML
-Eric
- 1. iTextSharp - Converti word doc/docx in pdf
- 2. Converti Word docx in Excel usando OpenXML
- 3. Salvataggio di file DOCX di Word come PDF
- 4. Converti a livello di codice Word (docx) in PDF
- 5. Converti file doc Word in docx su un server senza Word
- 6. Converti DOCX in PDF in modo programmatico senza Word installato?
- 7. base PowerShell - convertire in batch Word Docx in PDF
- 8. Come creare file * .docx da un modello in C#
- 9. Compilare un documento word in asp.net?
- 10. Aggiungi immagine a Word Docx utilizzando la libreria NPOI C#
- 11. Posso interrogare un elenco? Java
- 12. Come posso creare il documento .docx con Microsoft.Office.Interop.Word?
- 13. Estrazione di tabelle da un documento di Word DOCX in python
- 14. Come posso restituire un file docx di MemoryStream MVC?
- 15. Aprire un file di Word protetto da password in Java?
- 16. Come posso caricare .docx usando Codeigniter? (PHP)
- 17. MongoDB: come posso archiviare file (Word, Excel, ecc.)?
- 18. Come posso leggere il file .docx?
- 19. Come posso creare un semplice file docx con POI Apache?
- 20. Converti file di documenti o docx di Word in file di testo?
- 21. Come posso interrogare elasticsearch per un solo tipo di record?
- 22. Come posso interrogare tabelle incrociate con Pattern di deposito?
- 23. Come visualizzare PDF o Word DOC/DOCX nella finestra di WinForms?
- 24. Come posso interrogare un XDocument con un "percorso"?
- 25. Come modificare a livello di programmazione tutti i collegamenti ipertestuali in un documento di Word?
- 26. Come modificare docx con nokogiri e rubyzip
- 27. unire più documenti di Word in un Open XML
- 28. Come posso interrogare il mio repository subversion?
- 29. aggiungere stile alla Docx in Novacode
- 30. Come posso interrogare solo i discendenti diretti?
Ho letto i vostri messaggi su Open XML - grande opera! –