以编程方式打开位于C#中的计算机中的Word文档

taj*_*i01 7 .net c# file winforms

我正在使用WinForms.我有一个有按钮的表单.

目标:点击按钮:打开word文档.将文件路径硬编码到程序中的位置.我不希望用户必须找到word文档.

问题:我收到此错误消息.当我编写代码时,我在"应用程序"下面出现了一个红色错误行.

在此输入图像描述

    private void button1_Click(object sender, EventArgs e)
    { 
        this.Application.Documents.Open(@"C:\Test\NewDocument.docx", ReadOnly:true)

    }
Run Code Online (Sandbox Code Playgroud)

Hei*_*erg 14

您也可以考虑使用以下内容,而不是在引用中添加互操作:

System.Diagnostics.Process.Start(@"C:\Test\NewDocument.docx");
Run Code Online (Sandbox Code Playgroud)

  • 我更喜欢这种方法。这样,它将在任何文本编辑器中打开;不一定是MS Word。 (2认同)

ami*_*ama 12

首先将dll添加Microsoft.Office.Interop.Word到您的引用然后添加:

using Microsoft.Office.Interop.Word;
Run Code Online (Sandbox Code Playgroud)

并使用以下代码:

Application ap = new Application(); 
Document document = ap.Documents.Open(@"C:\Test\NewDocument.docx");
Run Code Online (Sandbox Code Playgroud)

  • 我不知道为什么,但是我不得不使用“ ap.Visible = true;”使单词可见。除非,它会打开文档,但是带有不可见的窗口。 (2认同)

Zhr*_*aie 6

Application不是this.ApplicationMicrosoft.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();
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 6

上面已经有一个很好的答案了:

System.Diagnostics.Process.Start(@"C:\Test\NewDocument.docx");
Run Code Online (Sandbox Code Playgroud)

对于 .Net Core 2 及更高版本,应将其修改为:

    var p = new Process();
    p.StartInfo = new ProcessStartInfo(filename)
    {
       UseShellExecute = true
    };
    p.Start();
Run Code Online (Sandbox Code Playgroud)