You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OpenXML Power Tools的BuildDocument方法合并文档时失败求助

使用OpenXML Power Tools合并Word文档时提示"Not an open XML Document"的问题

问题详情

我正在使用OpenXML Power Tools对Word文档执行转换操作,目标是合并多个Word文档模板,因此采用了BuildDocument方法。我的代码如下:

Dim SourceList As New List(Of Source)
For Each DocumentPath As String In DocumentPaths
    SourceList.Add(New Source(New WmlDocument(DocumentPath), True))
Next
DocumentBuilder.BuildDocument(SourceList, NewFilePath)

代码最初因过时的Close调用失败,在修改Power Tools代码移除该调用后,现在出现异常提示:

Not an open XML Document

我似乎已遵循作者博客教程中的设置步骤,且已验证文件路径指向的是Word文档,但即使使用单个硬编码文件路径仍会抛出相同错误,请问我是否遗漏了什么?


排查与解决方案

  • 确认文档格式为OpenXML标准(.docx)
    OpenXML Power Tools仅支持.docx格式的文档,旧版.doc是二进制格式,无法被解析。右键文件查看属性,确保扩展名和格式正确;若为.doc,需先将其另存为.docx再测试。

  • 检查文档是否损坏
    手动打开目标文档,若Word提示文件损坏或需要修复,说明文档本身存在问题。尝试重新保存文档,或从备份恢复后再进行合并操作。

  • 使用官方最新版OpenXML Power Tools
    手动修改源码移除Close调用可能引入其他兼容性问题,建议通过NuGet安装最新稳定版的OpenXML Power Tools,新版本已修复过时API相关问题,无需手动修改源码。

  • 排查文件访问权限
    即使路径正确,程序可能没有读取文件的权限。将文件移至桌面等非系统目录,或以管理员身份运行程序,验证是否为权限问题导致无法读取文档。

  • 添加异常捕获定位问题文件
    在创建WmlDocument实例时增加异常处理,精准定位出错的文件及具体错误信息:

    Dim SourceList As New List(Of Source)
    For Each DocumentPath As String In DocumentPaths
        Try
            Dim wmlDoc As New WmlDocument(DocumentPath)
            SourceList.Add(New Source(wmlDoc, True))
        Catch ex As Exception
            Console.WriteLine($"处理文件 {DocumentPath} 时出错: {ex.Message}")
            Console.WriteLine($"错误堆栈: {ex.StackTrace}")
        End Try
    Next
    If SourceList.Count > 0 Then
        DocumentBuilder.BuildDocument(SourceList, NewFilePath)
    End If
    
  • 测试空白文档排除特殊内容干扰
    创建一个仅包含简单文本的空白.docx文件,用硬编码路径测试合并逻辑。如果能正常运行,说明原文档存在自定义XML部件、损坏样式等非标准结构,需要针对性处理这些内容后再合并。


内容的提问来源于stack exchange,提问作者Josh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 11:08:23