如何在ASP.NET应用程序中查询Word docx?

gid*_*nma 5 asp.net docx openxml wordprocessingml

我想将Word 2007或更高版本的docx文件上传到我的Web服务器,并将目录转换为简单的xml结构.使用传统VBA在桌面上执行此操作似乎很容易.查看用于创建docx文件的WordprocessingML XML数据令人困惑.有没有一种方法(没有COM)以更加面向对象的方式导航文档?

Jac*_*itt 4

我强烈建议您研究一下Open XML SDK 2.0。它是一个 CTP,但我发现它在操作 xmlx 文件方面非常有用,而无需处理 COM。该文档有点粗略,但要查找的关键是 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);
}
Run Code Online (Sandbox Code Playgroud)