5

Word 2007以降のdocxファイルをWebサーバーにアップロードし、目次を単純なxml構造に変換したいと思います。従来のVBAを使用してデスクトップでこれを行うのは簡単だったようです。docxファイルの作成に使用されるWordprocessingMLXMLデータを見ると混乱します。よりオブジェクト指向の方法でドキュメントをナビゲートする方法(COMなし)はありますか?

4

3 に答える 3

4

Open XML SDK 2.0を調べることを強くお勧めします。これは CTP ですが、COM をまったく使用せずに xmlx ファイルを操作するのに非常に便利であることがわかりました。ドキュメントは少し大雑把ですが、重要なのは DocumentFormat.OpenXml.Packaging.WordprocessingDocument クラスです。拡張子の名前を .zip に変更し、そこにある XML ファイルを掘り下げると、.docx ドキュメントを分離できます。そうすることで、目次が「構造化ドキュメント」タグに含まれているように見え、そこから見出しなどのものがハイパーリンクになっているように見えます。少し試してみると、このようなものが機能するはずであることがわかりました(または、少なくとも出発点が得られます)。

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);
}
于 2009-08-19T01:04:44.733 に答える
3

これは、LINQ to XML を使用した Open XML WordprocessingML ドキュメントのクエリに関するブログ投稿です。そのコードを使用して、次のようにクエリを記述できます。

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);
    }
}

ブログ投稿: Open XML SDK と LINQ to XML

-エリック

于 2011-04-25T01:56:29.443 に答える
0

出発点として、XML ドキュメントとデータを参照してください。特に、LINQ to XML を使用する必要があります。

一般に、COM を .NET アプリケーションで使用することは望ましくありません。

于 2009-08-18T21:58:36.377 に答える