我手头有一个应用程序,它应该复制一个 Word 文件,打开副本,搜索/替换文档中的多个值并保存它。使用带有 VB6 或 C# 的 Office-Interop 可以正常工作。现在,最终用户有一个 citrix-setup,这里打开文档的命令会导致调用应用程序崩溃。
这是一些 C# 示例代码,直到它引发异常:
try
{
app = new ApplicationClass();
app.Visible = true;
object fileName = @"C:\some_document.doc";
object readOnly = false;
object isVisible = app.Visible;
object missing = System.Reflection.Missing.Value;
doc = app.Documents.Open(ref fileName,
ref missing, ref readOnly,
ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing, ref missing, ref isVisible,
ref missing, ref missing, ref missing);
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
消息是“尝试读取或写入受保护的内存。这通常表明其他内存已损坏。”。错误发生在打开命令处。
如前所述,只要 Word 没有通过 Citrix 启动,一切都运行良好。
现在,我有什么选择?我很想知道为什么会发生这种情况以及可以更改的内容,以便我可以使用编辑文档的现有代码。我会使用一个库来进行搜索和替换,而完全不使用 Word,所以我很高兴能得到关于我可以使用的产品的提示。因为我不是在这里寻找花哨的东西,所以我不想投资很多钱。
哦,这些是 DOC 文件,没有 DOCX!
我忘了说:用 Excel 和 Interop 做类似的事情确实有效!这才是最让我感动的!