MS Word Viewer C#.NET自动化

时间:2009-08-18 01:06:22

标签: c# ms-word automation ms-office

是否可以自动执行以下操作: 引用MS Word Viewer以编程方式打开文档然后打印它? C#理想情况下

我猜是否有可能打开它,然后更有可能打印它。

我尝试在Visual Studio中添加对COM对象的引用.MS Office 11/12对象库但未列出MS Word库?有什么想法吗?

我没有安装Office 200x

欢呼声

6 个答案:

答案 0 :(得分:5)

我们使用Word Interop程序集完成了它。这需要安装Word(在场景后面启动一个WINWORD进程),并且interop允许您在代码中与它进行交互。

据我所知,这是唯一的方法。

答案 1 :(得分:3)

尝试Aspose.Words,它旨在允许Office自动化,而不依赖于安装Word。它提供了一个很好的API来打开文档,然后执行一系列操作,如打印,导出到pdf和许多其他结果。

答案 2 :(得分:2)

以下代码将打开Word视图,其中包含您传递给它的文件。

System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo("WORDVIEW.exe", fileName.ToString());
System.Diagnostics.Process.Start(info);

尝试乱搞参数以及传递命令行打印(我不知道你是否可以)。

是的,在耗尽每条大道之后,我无法找到使用Microsoft Viewer的Interop,这非常令人沮丧。

答案 3 :(得分:2)

也许是这样的:

class Program
{
    static void Main(string[] args)
    {
        PrintDocument(@"C:\test.docx", 2);
        Console.ReadKey();
    }

    [DllImport("USER32.DLL")]
    public static extern bool SetForegroundWindow(IntPtr hWnd);

    private static void PrintDocument(string name, int copies)
    {
        var process = System.Diagnostics.Process.Start(new ProcessStartInfo
        {
            FileName = name,
            UseShellExecute = true
        });

        process.WaitForInputIdle();
        SetForegroundWindow(process.MainWindowHandle);

        SendKeys.SendWait("^p"); // send CTRL+P
        SendKeys.SendWait(copies.ToString()); // send number of copies
        SendKeys.SendWait("~"); // send ENTER

        // -- or send all in one
        //SendKeys.SendWait(string.Format("^p{0}~", copies));
    }
}

答案 4 :(得分:1)

是指免费的Microsoft Word Viewer,它允许您在没有安装Word的情况下查看Word文档?如果是这样,我不相信有一种方法可以自动化查看器,因为它不会安装Word COM自动化库,这是您需要的。

答案 5 :(得分:1)

这是如何使用文字自动化服务

如果在服务器上运行,使用Interop程序集总是一个坏主意 Word Automation Services

使用不是每个人都拥有的SharePoint。您还可以通过WebRequestMethod将文件传送到网页,然后将页面打印到可爱的pdf编写器或其他驱动程序。只需使用mime类型发送文件的字节。您将在asp.net网页的页面加载中打印。