Domanda

Vorrei caricare un file docx di Word 2007 o superiore al mio server web e convertire il sommario per una semplice struttura XML. In questo modo sul desktop con la tradizionale VBA sembra che sarebbe stato facile. Guardando i dati XML WordprocessingML utilizzati per creare il file docx è confusa. C'è un modo (senza COM) per navigare il documento in più di un modo orientato agli oggetti?

È stato utile?

Soluzione

mi raccomando esaminando la Open XML SDK 2.0 . Si tratta di un CTP, ma ho trovato estremamente utile nel manipolare file xmlx, senza avere a che fare con COM a tutti. La documentazione è un po 'discutibile, ma la cosa fondamentale da cercare è la classe DocumentFormat.OpenXml.Packaging.WordprocessingDocument. È possibile scegliere a parte il documento .docx, se si rinomina l'estensione in .zip e scavare nei file XML lì. Da fare questo, sembra un sommario è contenuto in un tag "documento strutturato" e che le cose come le intestazioni sono in un collegamento ipertestuale da lì. Putzing intorno con esso un po ', ho scoperto che qualcosa di simile dovrebbe funzionare (o almeno dare 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);
}

Altri suggerimenti

Ecco un post sul blog interrogazione di documenti WordprocessingML Open XML utilizzando LINQ to XML. Utilizzando il codice, è possibile scrivere una query nel seguente modo:

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: SDK aperto XML e LINQ to XML

-Eric

documenti XML e dati come punto di partenza. In particolare, ti consigliamo di utilizzare LINQ to XML.

In generale, non si desidera utilizzare COM in un'applicazione .NET.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top