我可以在C#中修改Word' 97文档吗?

时间:2016-09-14 10:48:12

标签: c# ms-word

已经阅读了这方面的一些变体,但没有完全解决我遇到的问题。

我是数据迁移团队的一员,我们的任务之一是将现有文档从一个环境迁移到另一个环境,迁移后,维护其中的任何现有超链接。

对于相对较新的文档(Office 2007+),这没有问题。我曾经看过Cathal Coffey的DocX; NPOI显然是不稳定的,不推荐使用 - 或者至少是我需要的部分; GemBox和其他人,虽然他们完美地适用于较新的文档,但他们都不能处理从Worda 97中打开/修改文档的问题。值得庆幸的是,在Win 3.1或Word for Windows 2下创建的文档超出了范围。

我意识到这些文件已经很老了,不再受支持,因此可能会带来安全隐患,我也意识到他们应该由各自的团队维护和更新,但无论出于何种原因,他们都有&过去,现在我的工作就是试着想办法做到这一点。

使用我可用的最旧版本的COM对象(Microsoft Office 14.0对象库,版本8.5.0.0)我遇到了更改信任设置,注册表更改等问题。执行所有这些会导致自身问题例如,当我需要对文档进行更改时,必须以受保护模式打开文档,此外,当部署文档时,我无法访问信任中心或注册表。在内存中检查文档会显示Hyperlink集合,但不会让我像在DocX中那样查看详细信息。

有没有办法做到这一点,还是我回过头来说这些文档太旧,不受支持,相关团队需要更好地维护文档?考虑可能尝试以HTML格式阅读文档,然后检查任何href标签,思想?我可以获得旧版本的Microsft DLL,即使我可以,它们是否与VS 2015兼容?第三方库是一个选项(Gem,DocX等),但像Aspose Documents这样的东西是不可能的,因为许可证是1000美元。

很高兴 - 在不需要安装Office的情况下工作的东西将真正成为梦想的东西。

谢谢大家。

1 个答案:

答案 0 :(得分:0)

最简单,最快捷的方法是将文档转换为Open XML格式。这可以在命令行上轻松完成(将路径替换为计算机上安装winword.exe的路径):

"C:\Program Files\Microsoft Office\Office15\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"

转换文件后,您可以通过编辑zip包中的原始XML或使用Microsoft的Open XML SDK来修改文档。