如何在winforms .exe应用程序中打开Microsoft Word文档?

时间:2015-03-17 04:22:37

标签: c# winforms

我有一个Winforms应用程序,它利用dll(docX)从StringBuilder创建.docx文档。我尝试使用Microsoft Word(默认程序)单击按钮打开该文档。我尝试了下面的代码,但我一直在收到错误。有人能指出我正确的方向来实现这个目标吗?

private void button3_Click(object sender, EventArgs e)
    {
        var x = "";
        using (DocX document = DocX.Create("Testdocx.docx"))
        {
            document.MarginTop = 25f;
            document.MarginBottom = 25f;
            document.MarginLeft = 25f;
            document.MarginRight = 25f;
            Paragraph p = document.InsertParagraph();
            FontFamily fontFamily = new FontFamily("Courier New");

            p.Append(sb.ToString()).Font(fontFamily).FontSize(8); //where "sb" is a StringBuilder
            document.Save();
            x = Environment.CurrentDirectory;
        }
        ProcessStartInfo startInfo = new ProcessStartInfo();
        startInfo.FileName = @"C:\Program Files (x86)\Microsoft Office\Office12\WINWORD.EXE";
        startInfo.Arguments = x + "\\Testdocx.docx";
        startInfo.UseShellExecute = true;
        Process.Start(startInfo);
    }

3 个答案:

答案 0 :(得分:1)

您的方法会对WINWORD的路径进行硬编码。虽然这可能适用于您的情况,但它不灵活且易碎。

您只需执行

即可
Process.Start(x + "\\Testdocx.docx");

这将找到.docx文件的默认文档处理程序(这是Winword,假设它已安装,并且您没有安装任何其他处理.docx文件的文件)。

答案 1 :(得分:1)

只需在代码中更改3行即可。你的问题将得到解决

这里...

using (DocX document = DocX.Create(Application.StartupPath + "\\Testdocx.docx"))

这里

document.Save();
x = Application.StartupPath;

。 在这里

startInfo.Arguments = "\"" + x + "\\Testdocx.docx\"";  // -> Quotes on either sides

。 另外我认为你不需要为Word提供完整的路径。只是做

 startInfo.FileName = "WINWORD.EXE";

甚至只是

 startInfo.FileName = "WINWORD";

答案 2 :(得分:1)

传递的参数包括:应用程序,位置

 Process.Start("winword.exe", "C:\\you path here \\filename.docx");