2016-09-14 71 views
1

已经阅读了这个的几个变种,但没有确切地解决我的问题。我可以在C#中修改一个Word '97文档吗?

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

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

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

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

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

很高兴有一些东西可以在不需要安装Office的情况下工作,真的是梦想中的东西。

谢谢大家。

+0

正在将二进制格式(.doc)转换为Open XML(.docx)的一个选项吗?然后看看这里:http://stackoverflow.com/a/2405508/40347 –

+0

@DirkVollmar在这一点上,任何事情都是一种选择。将调查,谢谢你的回复。 –

回答

0

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

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

其中,需要完全合格的路径名。

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

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

一旦文件被转换,您可以通过编辑压缩包内的原始XML或使用微软的Open XML SDK修改的文件。

+0

将它包装在一个新的C#过程中,工作完美。谢谢。 –

相关问题