【问题标题】:open specific word doc. depending on user selection c#打开特定的单词文档。取决于用户选择 c#
【发布时间】:2016-03-31 07:06:13
【问题描述】:

我目前有一个 word 文档。文件合并程序,并试图打开一个特定的 Word 文档。取决于用户的选择。

// sample of code used: 
string outputFolder = null;
...
// file selection
...  
string outcomeFolder = outputFolder;
string outputFile = "Combined Folder " + fileDate + " @ " + fileTime + ".docx";
string outputFileName = Path.Combine(outcomeFolder, outputFile);

在程序中,outputFolder 由用户通过fileBrowserDialog 选择

目前,该程序运行正常并合并用户选择的文件夹中的文件,但无法打开 Microsoft Word 以及合并的结果文档。

我尝试过使用:

Microsoft.Office.Interop.Word.Application officeApp = 
new Microsoft.Office.Interop.Word.Application();
...
// merging code
...   
Document documentTest = officeApp.Documents.Open(outputFileName);

我注意到虽然程序无法启动 Word,但任务管理器会继续创建 Word 的新实例。形成的合并文档也无法删除,因为它声称该文件当前正在使用中。就好像程序在后台打开但没有物理启动一样。在编辑/删除合并文件之前,必须终止 Word 的任务管理器实例

有什么建议可以解决这个问题吗?我错过了一些简单的东西还是由于非静态文件路径而导致的问题? - 如果需要任何其他信息,请询问。谢谢你

更新 1: 由于实施officeApp.Visible = true;,程序现在启动创建的文件,然后可以编辑/重新保存等。但是,如果我立即再次运行程序,尝试在同一文件夹中创建另一个合并文件等。我会看到@ 987654327@

更新 2: 如上所述,我得到了一个通用的 HRESULT 错误代码,我现在已经对其进行了补救。我将“新officeApp”移到“合并”处理程序中,该处理程序似乎允许快速连续多次合并而不会引发错误。

更新 3: 为了让事情更简单,我尝试实现Process.Start(outputFileName); 来打开文档。这是由于我现在介绍的附加复选框允许用户决定是否合并文档。将在创建后启动/呈现。如果文件可见性设置为 false,此新代码还可以防止创建其他 Word.exe。

感谢大家的建议和帮助。

【问题讨论】:

  • 你的程序是作为用户运行还是作为服务用户运行的服务,比如Local System?也许您的代码是正确的,但用户是错误的。检查额外的 Word.exe 进程。哪个用户在运行它?
  • 看看你的代码..你甚至调试它或校对你写的代码..outputFolder你初始化为null然后outputFileName你正在做Path.Combine(null, outputFile)你永远不要分配outputFolder
  • stackoverflow.com/questions/16253215/1874522/#16298284
  • @methodman - outputFolder 以 null 开头,但会根据用户选择而变化。一旦用户为合并文件选择了他们的输出目的地,outputFolder 将成为该目的地。

标签: c#


【解决方案1】:

您是否尝试过让 Word 可见?

officeApp.Visible = true;

【讨论】:

  • 您的回复很简单,但效果很好!谢谢你!程序现在按预期启动。
  • 再次快速回复,我已经用我面临的新情况和结果更新了我原来的问题。如果我使用相同的输入/输出运行程序两次,我会看到错误代码“RPC 服务器不可用。(来自 HRESULT 的异常:0x800706BA)
  • 取决于你想要做什么,但是你需要在使用它们之后释放 COM 对象,如果你正在运行多个合并,那么你可以考虑只创建一个 officeApp 实例,然后创建新的使用相同对象的文档。出现这个错误的原因有很多,包括防火墙问题,但我似乎记得有这个问题,因为我没有正确处理我的 COM 调用。如果它第一次运行,然后在第二次运行时失败,我会先把注意力集中在 COM 问题上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-05
相关资源
最近更新 更多