c# - 打开特定的word文档。取决于用户选择c#

标签 c#

我目前有一个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; 以来,程序现在启动创建的文件,然后可以编辑/重新保存等。但是,如果我立即再次运行该程序,尝试在其中创建另一个合并文件相同的文件夹等。我看到“RPC 服务器不可用。(HRESULT 异常:0x800706BA)”

更新 2: 如上所述,我收到了一个通用的 HRESULT 错误代码,现已修复。我将“new officeApp”移至“Merge”处理程序中,该处理程序似乎允许快速连续进行多个合并而不会引发错误。

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

感谢大家的建议和帮助。

最佳答案

您是否尝试过使 Word 可见?

officeApp.Visible = true;

关于c# - 打开特定的word文档。取决于用户选择c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36317034/

相关文章:

c# - TFS 构建不同项目中同一程序集的多个版本的问题

c# - 组合时间范围

c# - 如何查看HTTPRequest信息

c# - 有没有办法在 ASP.NET Core 3.1 应用程序端点中应用服务器 SSL 证书?

c# - 如何使用 Json.NET 将 XML 序列化为 JSON 对象

c# - 如何在 c# 中为 Microsoft.office.interop.word 实现后期绑定(bind)?

C# - 无法提交对 Access DB 的更改

c# - 通过枚举对 LINQ 表达式的结果进行排序

c# - 使用键盘快捷键触发 Silverlight Prism 命令

C# TagLib 为 Mp3 设置专辑封面