用 C# 以编程方式打开位于计算机中的 Word 文档
Posted
技术标签:
【中文标题】用 C# 以编程方式打开位于计算机中的 Word 文档【英文标题】:Programmatically Open Word Document Located in the Computer in C# 【发布时间】:2015-09-28 05:44:49 【问题描述】:我正在使用 WinForms。我有一个带有按钮的表单。
目标:点击按钮:打开一个word文档。文件路径被硬编码到程序中的位置。我不希望用户必须找到 word 文档。
问题:我收到此错误消息。当我编写代码时,“应用程序”下出现红色错误行。
private void button1_Click(object sender, EventArgs e)
this.Application.Documents.Open(@"C:\Test\NewDocument.docx", ReadOnly:true)
【问题讨论】:
只是一个疯狂的猜测,但是您是否缺少名为Application
的字段或属性?
@Roy 你说的字段是什么意思?
msdn.microsoft.com/en-us/library/ms173118.aspx
顺便说一句,如果你发现你的程序关闭时Word没有退出,可能是因为你的代码使用了双点。 Never use 2 dots with com objects.。它处理 Excel,但该概念适用于 Word。例如Application.Documents.Open()
【参考方案1】:
除了在您的参考中添加互操作之外,您还可以考虑使用这个:
System.Diagnostics.Process.Start(@"C:\Test\NewDocument.docx");
【讨论】:
我更喜欢这种方法。这样,它将在任何文本编辑器中打开;不一定是 MS Word。 我认为这应该作为答案。 更好?using var _ = System.Diagnostics.Process.Start(@"C:\Test\NewDocument.docx");
.【参考方案2】:
首先将 Microsoft.Office.Interop.Word
的 dll 添加到您的引用中,然后添加:
using Microsoft.Office.Interop.Word;
并使用以下代码:
Application ap = new Application();
Document document = ap.Documents.Open(@"C:\Test\NewDocument.docx");
【讨论】:
我不知道为什么,但我必须使用ap.Visible = true;
使单词可见。除非,它打开了文档但有一个不可见的窗口。
@DanielBonetti 是的,这是有道理的。打开应用程序只启动进程,而不启动界面。如果您以不需要用户交互(切换格式、编码等)的方式处理 Word 文档,这将非常有用。如果要打开 Word UI,则需要指定它。
The type or namespace name 'Application' does not exist in the namespace
【参考方案3】:
这个Application
不是this.Application
它是Microsoft.Office.Interop.Word.Application
。
所以你可以使用这个代码:
using System;
using Microsoft.Office.Interop.Word;
class Program
static void Main()
// Open a doc file.
Application application = new Application();
Document document = application.Documents.Open("C:\\word.doc");
//Do whatever you want
// Close word.
application.Quit();
【讨论】:
当我使用“使用 Microsoft.Office.Interop.Word;”时我在 Office 下收到一条错误行。我必须添加其他东西吗? @aisa 可能对你有帮助:***.com/questions/16054184/… 我在 (Application) application = new (Application()) 下遇到错误,我在 (Document) 下也遇到错误 您是否将 Microsoft Office 添加到您的参考文献中? 我做到了。我仍然在这两件事上遇到错误。 @aisa以上是关于用 C# 以编程方式打开位于计算机中的 Word 文档的主要内容,如果未能解决你的问题,请参考以下文章