【问题标题】:How can I print Office documents from .NET in a uniform manner?如何以统一的方式从 .NET 打印 Office 文档?
【发布时间】:2009-10-13 10:50:48
【问题描述】:

使用 Microsoft interOp 对象,我可以以编程方式打印 Word 或 Excel 文档。

有没有更简单统一的方式以编程方式打印所有类型的文档(.txt、.doc、.xls、.pdf 等)?

【问题讨论】:

    标签: .net printing c#-3.0 ms-office


    【解决方案1】:

    Microsoft 默认使用 DDE 从办公产品打印。 转到工具/文件夹选项/文件类型,然后查找 .XLS 例如并单击“高级”。 您将看到一个操作列表,其中之一是“打印”。 这里面是 Excel 用来打印然后关闭文档的 DDE 命令,其中一个命令存在于 Office 套件中的每个产品中。 不幸的是,DDE 使用了 SendMessage API,但这里有一个库可以为您包装这些函数:

    http://ndde.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=4828

    它不再是更新,但如果您只想要一种通用的打印文档方式,它仍然应该满足您的需求。

    如果您正在使用 Interop 并且已经打开了应用程序的实例,则只需调用相应的 PrintOut 函数。例如对于 Word,它是:

    object nullobj = Missing.Value;
    doc.PrintOut(ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj); 
    

    显然,互操作和 DDE 都远非理想的解决方案,但 Office 仍然基于与 90 年代相同的 Win32 内核。

    一旦他们在托管代码中重新编码,我们将拥有一组很好的通用接口,用于创建、打印和查看办公文档!

    干杯, 杰森

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多