【问题标题】:Check if a specific word document is Open using c#使用c#检查特定的word文档是否打开
【发布时间】:2017-08-31 07:47:39
【问题描述】:

有没有办法检查特定的word文档是否打开?当我在打开应用程序之前自己打开文档时,当我告诉我的应用程序在文档中写一些东西时,首先尝试打开文档,这就是我的应用程序卡住的地方。有没有办法在我尝试打开文件之前检查文件是否已经打开了?此时我的代码如下所示:

     object filename = s; // s is a string path which I get from database 
                Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
                Microsoft.Office.Interop.Word.Document doc1 = app.Documents.Open(s);
                object missing = System.Reflection.Missing.Value;
                app.Visible = true;

【问题讨论】:

  • @Filburt 也尝试使用该方法检查它是否打开,但实际上它每次都告诉我文件是打开的,即使文件没有打开,所以我不知道为什么这种方法对我不起作用...
  • 您所说的 “这就是我的应用卡住的地方”是什么意思 - 您是否遇到异常,应用程序是否“挂起”?
  • 我没有得到任何异常,只是我无能为力,我必须从 Visual Studio 停止应用程序
  • 我认为正在发生的事情是 Word 正在尝试打开文档并显示“正在使用的文件”对话框 - 询问您是否要以只读方式打开等 - 但应用程序不是此时可见。在打开文档之前尝试将 "app.Visible =true;" 移动到该行。我知道这不能回答问题(因此是评论),但你会看到发生了什么。

标签: c# ms-word


【解决方案1】:

把你的代码放在一个

try
{
   //your code here
}
catch (Exception e)
{
   //your behavior when the file is opened 
}

【讨论】:

  • 在这种情况下使用异常处理是不得已而为之——至少它应该区分文件访问异常/IO和其他异常。
  • 查看我对这个问题的评论——此时 Word 没有打开文件,而是显示了一个对话框(不幸的是应用程序被隐藏了)——所以不会发生异常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多