使用IRONWORD

C# 打印Word(开发者教程)

发布 2023年十月30日
分享:

欢迎阅读本教程,我们将探讨如何在 C# 控制台应用程序中使用 Microsoft Interop 打印 Word 文档。本新手入门指南将指导你完成以编程方式打印 Microsoft Word 文档的步骤。

前提条件

在深入学习代码之前,有必要先做好一些准备工作:

Microsoft Word 安装:确保系统中已安装 Microsoft Word。如果没有,请前往电脑上的微软官方网站或应用程序商店进行安装。

Visual Studio 设置:您应安装 Visual Studio,并具备创建控制台应用程序的功能。如果你是初学者,可以考虑下载 Visual Studio 社区它是免费的,足以满足我们的需要。

Word 文档:在您的机器上准备好一个 Word 文档样本,用于测试。这将是我们发送给打印机的文档。

设置环境

创建一个新的控制台应用程序

1.打开 Visual Studio。

2.点击创建新项目。

3.搜索 "控制台应用程序 "并选择相应的 C# 模板。

4.为项目命名 (例如,"InteropPrintConsoleTutorial"(交互打印控制台教程) 并选择合适的地点。

添加互操作参考

使用 Interop 需要引用 Microsoft Office Interop 库。下面介绍如何添加:

1.在 Visual Studio 中,右键单击解决方案资源管理器中的控制台项目。

2.导航至添加 > 引用。

3.在 "引用管理器 "窗口中,转到 COM 选项卡。

4.在搜索栏中输入 "Microsoft Word",过滤列表。

5.从结果中选择 Microsoft Word xx.x 对象库 (其中 xx.x 表示版本号).

6.单击 "确定 "按钮添加引用。

您也可以使用 NuGet 软件包管理器进行安装。

您还可以使用 NuGet 软件包管理器安装 Microsoft.Office.Interop.Word 库。

验证应用程序设置

确保应用程序的目标框架与 Interop 库兼容。你可以在解决方案资源管理器中右键单击项目,选择属性,然后查看应用程序选项卡下的目标框架来检查。如果遇到 Interop 库版本问题,请考虑下载必要的软件包或程序集,或调整目标框架版本。

环境设置完成后,就可以开始编码过程了。

了解文档对象

在处理 Word 文档时,文档对象是互操作服务的核心。该对象代表 Microsoft Word 文档并提供其所有功能。

常见的任务是打开文档:

object oMissing = Type.Missing;
object fileName = @"C:\path_to_document\document.docx";
Word._Document wordDoc = wordApp.Documents.Open(ref fileName, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
object oMissing = Type.Missing;
object fileName = @"C:\path_to_document\document.docx";
Word._Document wordDoc = wordApp.Documents.Open(ref fileName, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
Dim oMissing As Object = Type.Missing
Dim fileName As Object = "C:\path_to_document\document.docx"
Dim wordDoc As Word._Document = wordApp.Documents.Open(fileName, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing)
VB   C#

带有 ref oMissing 的多个参数可能看起来令人生畏,但对于 Open 方法来说却是必不可少的,因为该方法需要许多参数,其中大部分是可选参数。

实现打印功能

设置好环境并了解文档对象后,我们就可以开始深入研究打印 Word 文档的核心功能了。

Word 文档的基本打印

要打印文档,可以使用以下方法:

private void ButtonPrint_Click(object sender, EventArgs e)
{
    wordDoc.PrintOut();
}
private void ButtonPrint_Click(object sender, EventArgs e)
{
    wordDoc.PrintOut();
}
Private Sub ButtonPrint_Click(ByVal sender As Object, ByVal e As EventArgs)
	wordDoc.PrintOut()
End Sub
VB   C#

此方法使用默认设置将文档发送到默认打印机。

3.2 打印带有自定义设置的 Word 文档

如果要引入打印对话框、自定义打印机设置,甚至打印多页,则需要更详细的方法:

private void ButtonPrintWithSettings_Click(object sender, EventArgs e)
{
    object copies = "1";
    object pages = "1-3"; // To print multiple pages, e.g., 1 to 3.

    wordDoc.PrintOut(Copies: ref copies, Pages: ref pages);
}
private void ButtonPrintWithSettings_Click(object sender, EventArgs e)
{
    object copies = "1";
    object pages = "1-3"; // To print multiple pages, e.g., 1 to 3.

    wordDoc.PrintOut(Copies: ref copies, Pages: ref pages);
}
Private Sub ButtonPrintWithSettings_Click(ByVal sender As Object, ByVal e As EventArgs)
	Dim copies As Object = "1"
	Dim pages As Object = "1-3" ' To print multiple pages, e.g., 1 to 3.

	wordDoc.PrintOut(Copies:= copies, Pages:= pages)
End Sub
VB   C#

在上述源代码中,我们指定了页面范围和副本数量,但潜在的自定义功能非常多。

自定义打印设置

修改打印设置的功能使程序控制与众不同。无论是调整打印机设置、定义特定打印机,还是静默打印文档,都可以通过 Interop 实现。

无声印刷

静音打印就是在不与用户进行任何交互的情况下将文档发送到打印机:

object background = false;
wordDoc.PrintOut(Background: ref background);
object background = false;
wordDoc.PrintOut(Background: ref background);
Dim background As Object = False
wordDoc.PrintOut(Background:= background)
VB   C#

指定打印机

使用默认打印机以外的特定打印机打印文档:

wordApp.ActivePrinter = "Printer Name";
wordDoc.PrintOut();
wordApp.ActivePrinter = "Printer Name";
wordDoc.PrintOut();
wordApp.ActivePrinter = "Printer Name"
wordDoc.PrintOut()
VB   C#

高级打印机设置

除了指定打印机外,可能还需要调整打印机设置:

PrintDialog printDialog = new PrintDialog();
if (printDialog.ShowDialog() == DialogResult.OK)
{
    wordApp.ActivePrinter = printDialog.PrinterSettings.PrinterName;
    wordDoc.PrintOut();
}
PrintDialog printDialog = new PrintDialog();
if (printDialog.ShowDialog() == DialogResult.OK)
{
    wordApp.ActivePrinter = printDialog.PrinterSettings.PrinterName;
    wordDoc.PrintOut();
}
Dim printDialog As New PrintDialog()
If printDialog.ShowDialog() = DialogResult.OK Then
	wordApp.ActivePrinter = printDialog.PrinterSettings.PrinterName
	wordDoc.PrintOut()
End If
VB   C#

这样,用户就可以手动调整方向、双面打印等设置。

介绍 IronWord

虽然微软 Interop 提供了管理 Word 文档的功能,但它并不像真正的商业用途那样强大和高效。进入 IronWord-在 Word DOCX 文件处理方面,IronWord 是 Interop 的上佳替代品。IronWord 允许使用 C# 无缝读写和操作 Excel 文件。了解更多 如何开始使用 IronWord.

IronXL for .NET:C# Excel 库

Conclusion

在本教程中,我们深入学习了利用 Microsoft Interop 在 C# 控制台应用程序中以编程方式打印 Word 文档的步骤。我们已经了解了如何显示打印对话框、设置自定义打印设置以及控制各种打印方面,如选择指定打印机或定义页面范围。虽然 Interop 提供了基本功能,但值得注意的是,还有一些有效的替代方法,如 IronWord.

< 前一页
C# 打开Word文档

准备开始了吗? 版本: 2024.9 刚刚发布

免费NuGet下载 总下载量: 4,816 查看许可证 >