【问题标题】:C# Word Interop Saving docx with Word 2003 + Compatibility PackC# Word 互操作保存 docx 与 Word 2003 + 兼容包
【发布时间】:2011-04-08 00:06:47
【问题描述】:

在我的开发机器上,我在 Win7 x64 上安装了 Office 2007。

目标机器是在 WinXP x64 上运行的 Office 2003 + 兼容包(用于读取/写入 docx 等)。

我的程序会在 doc 文件上打开/保存为命令,并将它们转换为 docx。

它在我的机器上运行得非常好,但遗憾的是在目标机器上提供了零大小的文件。没有抛出异常,看起来它工作正常,除了当我查看输出文件时,它的长度为零。

任何想法为什么会发生这种情况,以及如何解决它?

我最后的办法是编写一个丑陋的 Word/PowerPoint 宏来打开一个文档并保存它。我希望一切都在我的程序中自动发生,而无需打开 Word/PowerPoint 窗口。

【问题讨论】:

  • 没有足够的信息来解决。建议您在应用中添加尽可能多的日志记录。
  • 没有什么可以登录的。文件打开/保存是在我的应用程序之外使用 Office 处理的(我相信是通过 COM)。我无法从 Office 访问任何调试信息。
  • 嗯,棘手的一个!你能在你的开发(sy 测试)机器上设置一个虚拟机来匹配你的目标环境吗?

标签: c# ms-word office-interop


【解决方案1】:

没有必要自动化 Word,因为弹出消息而相当缓慢和脆弱 您可能想看看 Microsoft 的 Office 文件转换器 (ofc.exe),但它有一个不必要的复杂用户界面。

最简单、最快的方法是使用以下命令轻松地将 .doc 转换为 .docx:

"C:\Program Files\Microsoft Office\Office12\wordconv.exe" -oice -nme <input file> <output file>

where 需要是完全限定的路径名​​。

该命令可以使用for轻松应用于多个文档:

for %F in (*.doc) do "C:\Program Files\Microsoft Office\Office12\wordconv.exe" -oice -nme "%F" "%Fx"

您可以使用 Process.Start 方法从 C# 运行此命令。

【讨论】:

    【解决方案2】:

    您确定您使用的 SAVE 或 SAVEAS 指定了正确的选项来强制将文件另存为 DOCX?在 2007 年,这是内置的,但在 2003 年,我相信你必须以不同的方式指定保存格式,明确告诉它使用兼容包中的适当过滤器。

    【讨论】:

      猜你喜欢
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多