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

标签 asp.net docx openxml wordprocessingml

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

最佳答案

我强烈建议您查看 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);
}

关于asp.net - 如何在 ASP.NET 应用程序中查询 Word docx?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1296743/

相关文章:

c# - Excel共享公式展开

c# - CustomXMLPart 中的换行符

excel - 如何使用 OpenXML API 从 Excel 电子表格读取表格?

c# - 在 ASP.NET 中每个用户只允许一个并发登录

javascript - 在母版页上有选择地调用 css

asp.net - 实现用户事件跟踪

search - 如何在多个 DOCX 文件中搜索 Word 字段中的字符串?

python - 导入错误: cannot import name opendocx

asp.net - Visual Studio Team Services 在构建期间编译 LESS 脚本

php - 从 doc 和 docx 中提取文本