MS Word Viewer C# .NET 自动化

3

是否可以自动化以下操作: 通过编程引用MS Word Viewer打开文档并打印? 最好使用C#。

我猜如果可以打开它,那么很可能也可以打印它。

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

我没有安装Office 200x

谢谢


“M$” - 我猜.NET开发不是你的日常工作 :-) - Robert Venables
2
http://www.penny-arcade.com/comic/2002/7/22/ - Domenic
1
如果您没有安装Office,那么为什么会期望安装Office自动化呢? - John Saunders
我遇到了同样的问题,我在这里找到了查看Word文档的解决方案:http://www.codeproject.com/Questions/189082/Is-there-any-word-viewer-plugin-available-for-NET - user1670189
6个回答

5
我们使用Word Interop程序集来实现这一点。这需要安装Word(在幕后启动一个WINWORD进程),并且Interop允许您在代码中与其交互。
据我所知,这是唯一的方法。

3

试试 Aspose.Words,它专为实现 Office 自动化而设计,无需依赖于安装 Word。它提供了一个不错的 API 来打开文档,然后执行一系列操作,例如打印、导出为 PDF 等多种结果。


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));
    }
}

2

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

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

尝试玩弄参数以通过命令行打印(我不知道是否可以)。
是的,在尝试了所有可能的途径后,我发现无法与Microsoft Viewer进行Interop,这非常令人沮丧。

1

这是如何使用Word自动化服务

如果在服务器上运行,使用Interop程序集总是不好的主意Word自动化服务

它使用了SharePoint,而不是每个人都有。您还可以通过WebRequestMethod将文件传递到网页,并将页面打印到可爱的pdf编写器或另一个驱动程序。只需使用MIME类型发送文件的字节即可。您可以在asp.net网页的页面加载中打印。


1
您是在指微软免费的Word文档查看器吗?它可以让您在没有安装Word的情况下查看Word文档。如果是这样,我认为无法自动化该查看器,因为它不会安装Word COM自动化库,而这正是您需要的。

有时程序支持另一种方式,例如DDE或命令行参数,告诉它们打印某些内容。您可能会在注册表中看到这一点,例如在我的HKEY_CLASSES_ROOT\AcroExch.acrobatsecuritysettings.1\shell\Print\command中,我有一个值""C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe"" /p /h "%1" ...其中/p参数可能是告诉它打印的。 - ChrisW

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接