どのように私は、ASP.NETアプリケーションでWordのdocxファイルを照会することができますか?
-
18-09-2019 - |
質問
私は自分のWebサーバーにWord 2007の以上のdocxファイルをアップロードし、簡単なXML構造に目次を変換したいと思います。伝統的なVBAをデスクトップ上でこれを行うと、それは簡単だっただろうように思えます。 DOCXファイルを作成するために使用されるWordprocessingML XMLデータを見ると混乱しています。オブジェクト指向のファッションのより多くの文書をナビゲートする(COMなし)方法はありますか?
解決
私は非常に<のhref = "http://www.microsoft.com/downloads/details.aspx?FamilyID=c6e744e5-36e9-45f5-8d8c-331df206e0d0&DisplayLang=en" のrel = "nofollowをnoreferrer" に探してお勧めします>オープンXML SDK 2.0 に。それはCTPのですが、私は全然COMに対処しなくてもファイルをxmlx操作する上で、それは非常に有用であることが分かってきました。ドキュメントは少し大ざっぱですが、探すために重要なことは、DocumentFormat.OpenXml.Packaging.WordprocessingDocumentクラスです。あなたは.zipファイルとそこにXMLファイルに掘るために拡張子の名前を変更する場合は、.docxの文書を離れて選ぶことができます。それをやってから、目次は、「構造化文書」タグに含まれているように見えるとの見出しのようなものがそこからハイパーリンクであること。少しそれを周りPutzing、私はこのような何かが動作する(あるいは、少なくともあなたの出発点を与える)必要があることがわかっています。
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);
}
他のヒント
ここではXMLにLINQを使用してオープン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);
}
}
ブログ記事:<のhref = "http://blogs.msdn.com/b/ericwhite/archive/2008/07/09/open-xml-sdk-and-linq-to-xml.aspx" のrel = "nofollowを">オープンXML SDKとLINQはにXMLに
-Eric
XMLドキュメントを参照し、データが出発点としてを。特に、あなたはXMLにLINQを使用することをお勧めします。
一般的には、.NETアプリケーションでCOMを使用する必要はありません。