【问题标题】:Can I modify a Word '97 document in C#我可以在 C# 中修改 Word '97 文档吗
【发布时间】:2016-09-30 05:10:18
【问题描述】:

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

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

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

我意识到这些文档非常陈旧并且不再受支持,因此可能会带来安全风险,我还意识到它们应该由各自的团队维护和更新,但无论出于何种原因,他们都没有从来没有,现在我的工作就是想办法做到这一点。

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

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

很高兴拥有 - 无需安装 Office 即可工作的东西将是真正的梦想。

谢谢大家。

【问题讨论】:

  • 是否可以选择将二进制格式 (.doc) 转换为 Open XML (.docx)?那么请看这里:stackoverflow.com/a/2405508/40347
  • @DirkVollmar 在这一点上,任何事情都是一种选择。会调查的,谢谢你的回复。

标签: c# ms-word


【解决方案1】:

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

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

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

【讨论】:

  • 将其包装在一个新的 C# 进程中,完美运行。谢谢。
猜你喜欢
  • 2015-07-14
  • 1970-01-01
  • 2013-04-21
  • 1970-01-01
  • 2012-02-20
  • 2018-11-29
  • 2010-11-05
  • 2017-03-29
  • 1970-01-01
相关资源
最近更新 更多