2011-04-08 82 views
0

在我的开发机器上,我将Office 2007安装在Win7 x64上。C#Word Interop将docx与Word 2003兼容包保存

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

我的程序除了别的以外,还可以打开/保存为doc文件的命令,将它们转换为docx。

它在我的机器上运行很好,但可悲的是在目标机器上给零大小的文件。没有任何异常抛出,看起来它工作正常,除了当我看到输出文件时,它是零长度的。

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

我的最后手段是写一个丑陋的Word/PowerPoint宏,它会打开一个文档并保存它。我宁愿一切从我的程序自动发生,而无需打开Word/PowerPoint窗口。

+0

没有足够的信息来解决。建议您尽可能多地将日志记录添加到您的应用程序中。 – 2011-04-08 00:08:52

+0

对此没有任何登录。打开/保存文件是使用Office在我的应用程序之外处理的(通过COM,我相信)。我无法访问Office中的任何调试信息。 – Ozzah 2011-04-08 00:13:31

+0

嗯,棘手的一个!你可以在你的开发(系统测试)机器上设置虚拟机来匹配你的目标环境吗? – 2011-04-08 00:20:55

回答

2

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

最简单和最快的方法是从.DOC转换很容易使用下面的命令为.docx:

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

其中<输入文件>和<输出文件>必须是完全合格的路径名。

该命令可以很容易地应用到使用for多个文档:

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

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

0

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