我需要分析 MS Word 文档中表格中的一长串项目。自然而然地,我认为编写一个简单的 C# 程序来处理所有这些内容会很有用。
我注意到当我使用 Interop 时,它还会在打开时创建备份。这很浪费,因为我只想读取它。
wordApp = new Microsoft.Office.Interop.Word.Application();
wordApp.Documents.Open("yada.docx");
好吧,我查看了 MS 网站,瞧,有一个只读标志。
自然而然地,我就会用它……
wordApp = new Microsoft.Office.Interop.Word.Application();
wordApp.Documents.Open("yada.docx",false, true,false);
哎呀。微软一如既往地打了我的脸。虽然我在扫描文档中的表格后没有更改或保存文档,但现在当我用微软 Word 打开它时,它却突然显示为“只读”
并且不是文件系统属性。它是 doc 文件内部的东西。现在我不知道如何摆脱该设置!
参见下图。如能提供任何帮助,我们将不胜感激!
答案1
全部,
经过一段时间的破解,我发现两个“Word”实例已经在运行,即使我的分析程序没有运行。它们被埋在任务管理器列表中,没有任何 UI 打开。
它们可能是 C# 程序在开发和调试周期中停止时留下的残留物,留下孤立的 COM 实例在运行。我的错误,我以为我已经杀死了它们。
如果 Word 能够显示类似“Word 的另一个副本以只读模式打开了此文档”之类的内容,那将会很有用。这样我就知道从哪里开始查找了。
此外,由于缺少临时文件(即“~$ada.docx”),因此认为没有在某处打开副本。
我删除了这些副本,现在当我用 Word 打开文档时,它不会显示它是“只读”。我编写的用于扫描文档中的表格的 C# 程序将其以“只读”打开,而不会创建临时备份文件。
现在一切都按预期进行。