如何以统一的方式从.NET打印Office文档?

2024-02-18

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

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


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

http://ndde.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=4828 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 核心。

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

干杯, 贾森

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何以统一的方式从.NET打印Office文档? 的相关文章

  • Windows 窗体数据绑定 DisplayMember 自定义类的子属性

    我正在尝试将 Windows 窗体项目中的 ListBox 的 DisplayMember 属性设置为我绑定到的通用列表内的嵌套类的属性 这是一个简单的例子 public class Security public int Security
  • 即使没有设置期望,为什么我的部分模拟会模拟所有虚拟方法?

    我有一个用户控件 它在我想测试的 ValidateChildren 方法中进行一些验证 我已经创建了用户控件的部分模拟 但是尽管我没有对 ValidateChildren 方法设置任何期望 但我只是简单地调用它 它只是被跳过 并且方法内的代
  • 从子类调用父方法c#

    这是一个与我之前看到的答案略有不同的问题 或者我没有得到它 我有一个父类 其方法名为MyMethod 和一个变量public Int32 CurrentRow public void MyMethod this UpdateProgress
  • 有没有办法找到 .NET 中嵌入资源的最后修改日期?

    有人知道这样做的方法 在运行时 吗 我不确定我能在描述中详细阐述比标题中已经给出的更多信息 但如果您觉得我错过了某些内容 请说出来 resx 文件本身应该有一个与之关联的修改日期 但您将无法获取该文件中各个资源的修改日期
  • 针对 .NET 3.5 和 Silverlight

    假设我已经有一个构建 NET 3 5 程序集的项目 现在我想为 Silverlight 构建这个程序集 并且进一步以最小的努力维护其 Silverlight 版本 什么是不可接受的 为 Silverlight 构建创建单独的项目 什么是可以
  • 标签文本每秒刷新一次

    我试图每秒刷新一次标签 以便倒计时更新 但遇到了一些麻烦 我对 C 非常陌生 对于菜鸟问题 表示歉意 private void Form1 Load object sender EventArgs e bool ephCD true int
  • 支持 Hexagon Maps for .NET 的开源 2D 游戏引擎

    我找不到 2D 游戏引擎来为 net 创建六边形地图 我能找到的最好的是 Xconq http sourceforge net projects xconq http sourceforge net projects xconq 和pyga
  • 任务取消异常 (ThrowForNonSuccess)

    这是这个问题的延续 多任务延续 https stackoverflow com questions 21154692 task continuiation 我已经按照答案更改了代码 但是现在我收到了TaskCancelledExceptio
  • 如何制作可插入静态类

    我知道如何在 C 中制作可插入的东西 定义一个接口 Activator CreateInstance
  • DateTimeOffset 如何处理夏令时?

    我将日程表以星期几 小时和分钟的形式存储在数据库中 当数据被读取时 我们创建一个DateTime对象下一次出现的那一天 一小时和一分钟 但我需要修改它以使其能够感知 DST 如有必要 我可以修改数据库 我知道DateTimeOffset存储
  • 多步算法的设计模式

    我正在编写一个控制台应用程序 该应用程序执行包含 N 个步骤的算法 这一步很重要N在步骤之前正确完成N 1被执行 否则程序应该停止工作并显示错误消息 我可以用嵌套来做到这一点if当然和用途的陈述try catch finally 在fina
  • 变量声明后的一个问号是什么意思? [复制]

    这个问题在这里已经有答案了 在玩开源项目时 我尝试ToStringDateTime 对象被编译器阻止 当我跳到定义时 我看到了这个 public DateTime timestamp 有人可以告诉我这叫什么以及为什么它可能有用吗 这是一个可
  • 调试调用 .Net(C#) dll 的 VB6 项目

    我已经被这个问题困扰了几个小时了 我希望有人遇到过类似的问题 我们使用 VS2010 开发了一个原型 Net C dll 并希望能够在 C 应用程序和 VB6 应用程序中调用该 dll 我的问题是 是否可以调试调用 Net dll 的 VB
  • 为什么 BLToolkit 没有更流行? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 新的 SDK 项目在 Visual Studio 中缺少“启动外部命令”

    旧的 NET 项目在调试下有一个选项 允许 启动外部命令 如图所示 当我使用新的SDK样式创建新项目时 我看不到相同的选项 如下图 有办法拿回来吗 两张图片均取自同一个 VS 因此与版本无关 我发现的解决方法是正常运行程序并附加到它 但这并
  • SerialPort.Open() --IOException --“参数不正确。”

    我编写了以下代码来在加载 MainForm 时配置串行端口 第一次运行时它给出IOException打开端口时 提示参数不正确 但当我重新启动应用程序时 它工作正常 仅当应用程序在启动计算机后第一次运行时才会出现异常 然后它可以正常工作直到
  • Web API 请求上的滑动会话

    UPDATE 看起来它正在尝试写入新的 cookie 标头ApplyResponseGrantAsync但不能因为它是抛出标头已发送的异常 UPDATE 更清楚 我如何获得Set Cookie在 Web API 请求期间添加到 XHR 响应
  • 使用私有构造函数的 C# 单元测试类?

    好吧 我刚刚收到一个作业 我必须对具有私有构造函数的类执行单元测试 现在 当所有方法也都是非静态时 我该如何在不初始化类的情况下进行单元测试 有什么方法可以对具有私有构造函数的类进行单元测试 无需反射 如果您无法将类公开 您仍然可以通过以下
  • 是否有理由为什么用 XmlInclude 修饰的基类在序列化时仍然会抛出类型未知的异常?

    我将简化代码以节省空间 但所提供的内容确实说明了核心问题 我有一个类 它的属性是基类型 有 3 个派生类可以分配给该属性 如果我将任何派生类分配给容器并尝试序列化容器 XmlSerializer 会抛出可怕的错误 类型 x 不是预期的 使用
  • 有关 Endian 性和 .Net 的详细信息?

    我有几个关于字节顺序的问题 这些问题足够相关 我保证将它们作为一个问题提出 1 字节顺序是由 Net还是由硬件决定的 2 如果是由硬件决定的 我怎样才能在C 中找出硬件的字节序 3 字节序是否影响二进制交互 例如 OR AND OR 或移位

随机推荐