打开特定单词doc。取决于用户选择c#

时间:2016-03-30 18:36:48

标签: c#

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

// 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;程序现在启动创建的文件,然后可以编辑/重新保存等。但是,如果我再次立即运行程序,尝试在同一文件夹中创建另一个合并文件等我呈现与"RPC server is unavailable. (Exception from HRESULT: 0x800706BA)"

更新2: 如上所列,我得到了一个通用的HRESULT错误代码,我现在已经补救了。我将“new officeApp”移动到“合并”处理程序中,这似乎允许快速连续多次合并而不会抛出错误。

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

谢谢大家的建议和帮助。

1 个答案:

答案 0 :(得分:4)

您是否尝试过让Word可见?

officeApp.Visible = true;