跳至页脚内容
使用 IRONWORD

如何使用 C# 操作 Word 文档

微软开发 Word 的目的是为了用作文字处理软件。 该软件最初以 Multi-Tool Word 的名称面向 Xenix 系统推出,于 1983 年 10 月 25 日发布。随后,该软件开发了适用于各种操作系统的版本,例如 SCO Unix (1990)、Microsoft Windows (1989)、Atari ST (1988)、OS/2 (1989)、AT&T UNIX PC (1985)、运行 DOS 的 IBM PC (1983)、运行 Classic macOS 的 Apple Macintosh (1985)、macOS (2001)、Web 浏览器 (2010)、iOS (2014) 和 Android (2015)。 Wine 可用于在 Linux 系统上运行旧版本的 Microsoft Word。

商业版 Word 可以作为独立应用程序或Microsoft 365的组件进行许可,Microsoft 365 可以购买永久许可或作为 Microsoft 365 订阅的一部分。 在本文中,我们将利用 Microsoft Interop 程序集操作 Word 文档,并探讨 IronXL 如何帮助我们编辑 Excel 文档。

如何使用 C# 操作 Word 文档

  1. 创建一个全新的 Visual Studio 项目。
  2. 设置读取 Word 文档所需的库。
  3. 要操作 Word 文档,请加载现有文件或创建新文件。
  4. 编辑文档数据并解析文件。
  5. 删除所有已创建的对象。

什么是 Microsoft Interop

使用 C# 或 VB.NET 编写的程序可以通过 Office Interoperability for Microsoft Word 创建或打开 Word 文档(DOC、DOCX 和 RTF)。 然而,在项目中使用时,它有很多缺点。

本文将讨论在使用 C# 或 VB.NET 进行 Microsoft Office Interop(Word 自动化)时可能遇到的常见问题。

例如:

  • 所有用于 Word 自动化的客户端 PC 都需要获得 Microsoft Word 的许可。
  • 每台客户端电脑上都必须安装相同版本的 Microsoft Word。
  • 当使用自动化功能时,Word 会占用几兆字节的 RAM 在后台加载不同的文件和 DLL。
  • Microsoft Word API 是通过 COM 对象访问的。 从托管代码调用 COM 对象时可能会出现问题,例如类型转换、需要 COM 包装器以及 .NET Framework 集成不良等。

在 Visual Studio 中创建新项目

使用 Interop 库之前,必须启动 Visual Studio 并创建一个 .NET 项目。 Visual Studio 与任何版本都兼容,但建议使用最新版本。 根据您的需要,您可以开发项目模板或类似 Windows Forms 的应用程序。 为了简单起见,我将使用控制台应用程序。

如何使用 C# 操作 Word 文档:图 1 - 创建一个新的 Visual Studio 项目

配置项目详情

接下来,请提供项目地点和名称。

如何使用 C# 操作 Word 文档:图 2 - 配置新的 VS 项目

使用 .NET Framework 创建一个新的项目文件

使用框架下拉菜单,您可以选择.NET Framework 。 本项目将采用 Dot.NET Framework 4.7。 下一步是按下"创建"按钮。

应用程序生成解决方案后,您可以通过访问 Program.cs 文件输入代码并构建或运行程序。

如何使用 C# 操作 Word 文档:图 3 - 新建 .NET 项目 .cs 文件

现在Microsoft.Office.Interop.Word库已经添加完毕,我们可以测试代码了。

安装 Interop 库

下一个修复需要安装Interop库。 要完成此操作,请在 NuGet 包管理器控制台中输入以下命令:

Install-Package Microsoft.Office.Interop.Word

如何使用 C# 操作 Word 文档:图 4 - 要安装 IronXL 库,您可以使用程序包管理器控制台并输入以下命令:"Install-Package IronXL.Excel"

查找"Interop"包的另一种方法是使用 NuGet 包管理器。 在所有与 Interop 相关的 NuGet 包中,我们可以从列表中选择所需的包进行下载。

如何使用 C# 操作 Word 文档:图 5 - 选择Microsoft.Office.Interop.Word

安装完所有必要的库之后,就可以开始编辑 DOCX 文件了。

使用互操作性操作现有 Word 文档

要使用 Microsoft Word,必须先创建Microsoft.Office.Interop.Word.Application的实例。 在这种情况下,将进行 Word 文档的交流。 下一步是使用我们刚刚创建的Microsoft.Office.Interop.Word.Application实例的Documents属性创建一个新的 Word 文档实例。 如下面的 C# 代码片段所示,这允许我们以编程方式操作 Word 文档:

using System;
using Microsoft.Office.Interop.Word;

class Program
{
    static void Main()
    {
        try
        {
            // Create a new instance of Word Application
            var WordApp = new Microsoft.Office.Interop.Word.Application();
            // Open an existing document
            var WordDoc = WordApp.Documents.Open(@"d:/Demo.docx");
            // Edit the content of the first paragraph
            WordDoc.Paragraphs[1].Range.Text = "New text here...";
            // Save the edited document
            WordDoc.SaveAs(@"d:/NewDemo.docx");
            // Close the document
            WordDoc.Close();
            // Quit the Word application
            WordApp.Quit();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }
    }
}
using System;
using Microsoft.Office.Interop.Word;

class Program
{
    static void Main()
    {
        try
        {
            // Create a new instance of Word Application
            var WordApp = new Microsoft.Office.Interop.Word.Application();
            // Open an existing document
            var WordDoc = WordApp.Documents.Open(@"d:/Demo.docx");
            // Edit the content of the first paragraph
            WordDoc.Paragraphs[1].Range.Text = "New text here...";
            // Save the edited document
            WordDoc.SaveAs(@"d:/NewDemo.docx");
            // Close the document
            WordDoc.Close();
            // Quit the Word application
            WordApp.Quit();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }
    }
}
Imports System
Imports Microsoft.Office.Interop.Word

Friend Class Program
	Shared Sub Main()
		Try
			' Create a new instance of Word Application
			Dim WordApp = New Microsoft.Office.Interop.Word.Application()
			' Open an existing document
			Dim WordDoc = WordApp.Documents.Open("d:/Demo.docx")
			' Edit the content of the first paragraph
			WordDoc.Paragraphs(1).Range.Text = "New text here..."
			' Save the edited document
			WordDoc.SaveAs("d:/NewDemo.docx")
			' Close the document
			WordDoc.Close()
			' Quit the Word application
			WordApp.Quit()
		Catch ex As Exception
			Console.WriteLine(ex.ToString())
		End Try
	End Sub
End Class
$vbLabelText   $csharpLabel

在上面的代码中,我们可以使用 C# 编辑 Word 文档。 首先,我们使用 Interop 创建一个 Word 应用程序实例。然后使用Open方法打开一个现有的 Word 文件,并将其转换为文档对象。 然后,我们可以访问与文档交互的各种属性和方法。 在这个示例中,我们使用Paragraphs集合和索引来指定要编辑的段落,从而更新第一个段落的文本。 最后,使用SaveAs保存更改,文档和应用程序也正确关闭。

IronXL 库是 Interop 的替代方案

IronXL是 Microsoft Interop 的替代方案,可用于 .NET 程序中处理 Excel 文件。 虽然 Microsoft Interop 需要通过 Interop 程序集与 Excel 进行交互,但 IronXL 提供了一种更直接、有效且强大的方法,可以在 .NET 环境中以编程方式操作 Excel 文件。

使用 IronXL 而不是 Microsoft Interop 有以下几个优点:

-性能和资源效率:与依赖于计算机上安装的 Excel 应用程序的 Microsoft Interop 相比,IronXL 的性能更好,使用的资源更少,因为它不依赖于 Excel 应用程序。 -易用性和简洁性:IronXL 提供了一个更易于使用的 API,简化了 Excel 文件的读取、写入和操作,而无需像 Microsoft Interop 那样复杂。 -兼容性和依赖性:IronXL 无需在计算机上安装 Microsoft Excel,从而消除了与各种版本的 Excel 或 Office 可能出现的依赖性和兼容性问题。 -平台独立性:与可能与特定 Microsoft Office 版本更密切相关的 Microsoft Interop 不同,IronXL 提供了更大的灵活性,并且易于在各种环境和平台上部署。

对于必须以编程方式操作 Excel 文件的 .NET 开发人员来说,IronXL 通常是一个更好的选择,因为它易于使用、速度快,并且减少了对第三方软件安装的依赖。 然而,IronXL 和 Microsoft Interop 之间的选择可能会受到项目的具体情况、现有基础设施以及用户对每个库的熟悉程度的影响。

在选择这些选项时,务必牢记您的应用程序的要求。 点击此链接了解更多关于 IronXL 库的信息。

安装IronXL库

由于即将发布的补丁需要 IronXL 库,请安装它。 要完成此操作,请打开 NuGet 包管理器控制台并键入以下命令:

Install-Package IronWord

如何使用 C# 操作 Word 文档:图 6 - 使用控制台命令安装 IronXL

另一种方法是通过 NuGet 包管理器搜索"IronXL"包。从与 IronXL 关联的所有 NuGet 包列表中,我们可以选择需要下载的包。

如何使用 C# 操作 Word 文档:图 7 - 通过浏览安装IronXL.Excel

使用 IronXL 编辑 Excel 文档

只需几行代码即可将数据导出为 XLSX 或 XLS 格式。 以下源代码示例展示了如何将数据从 Excel 文件导出为简单的表格格式:

using IronXL;

class Program
{
    static void Main()
    {
        // Load an existing Excel file
        var workbook = WorkBook.Load("Demo file.xlsx");
        // Access the first sheet or the sheet by name
        var ws = workbook.GetWorkSheet("Sheet1");
        // Read a value from a cell and output it to the console
        string address_val = ws["A1"].ToString();
        Console.WriteLine(address_val);
        // Modify a cell's value
        ws["A2"].Value = "Hello World";
        // Save the workbook to different formats
        workbook.SaveAs("export.xlsx");
        workbook.SaveAs("export.xls");
        workbook.WorkSheets[0].SaveAs("export.xls");
    }
}
using IronXL;

class Program
{
    static void Main()
    {
        // Load an existing Excel file
        var workbook = WorkBook.Load("Demo file.xlsx");
        // Access the first sheet or the sheet by name
        var ws = workbook.GetWorkSheet("Sheet1");
        // Read a value from a cell and output it to the console
        string address_val = ws["A1"].ToString();
        Console.WriteLine(address_val);
        // Modify a cell's value
        ws["A2"].Value = "Hello World";
        // Save the workbook to different formats
        workbook.SaveAs("export.xlsx");
        workbook.SaveAs("export.xls");
        workbook.WorkSheets[0].SaveAs("export.xls");
    }
}
Imports IronXL

Friend Class Program
	Shared Sub Main()
		' Load an existing Excel file
		Dim workbook = WorkBook.Load("Demo file.xlsx")
		' Access the first sheet or the sheet by name
		Dim ws = workbook.GetWorkSheet("Sheet1")
		' Read a value from a cell and output it to the console
		Dim address_val As String = ws("A1").ToString()
		Console.WriteLine(address_val)
		' Modify a cell's value
		ws("A2").Value = "Hello World"
		' Save the workbook to different formats
		workbook.SaveAs("export.xlsx")
		workbook.SaveAs("export.xls")
		workbook.WorkSheets(0).SaveAs("export.xls")
	End Sub
End Class
$vbLabelText   $csharpLabel

前面的示例通过调用Load函数加载一个已存在的 Excel 文件,该函数接受文件路径和名称作为参数。 文件导入到WorkBook对象中已完成。 然后借助GetWorkSheet函数加载 Excel 工作表,该函数允许我们使用工作表名称加载工作表。 然后使用 Excel 地址读取该值。 想了解更多关于读取Excel文件的信息,请点击这里

我们可以使用相同的 Excel 地址来更改 Excel 表格中的值。 可以使用WorkBook对象提供的SaveAs功能将 Excel 文档另存为 XLSX 或 XLS 文件。 通过此过程,整个文件将以所选格式保存。

如何使用 C# 操作 Word 文档:图 8 - 控制台输出

此外,我们还可以通过索引值或名称来选择特定的 Excel 工作表。 接下来,我们可以使用SaveAs选项将 Excel 电子表格中的数据导出到另一个文件。 点击此链接了解更多关于格式化和导出Excel文件的信息。

结论

IronXL是Excel最受欢迎的插件之一。 它不依赖任何额外的外部库。 由于它是独立运行的,因此无需安装 Microsoft Excel。 它通过多种渠道运作。 这与 Interop 库形成对比,Interop 库必须使用额外的库来解析文件才能编辑 Word 文档。

IronXL 为任何使用 Microsoft Excel 文档的编程过程提供完整的解决方案。 计算、对字符串或数字进行排序、修剪、添加、查找和替换、合并和取消合并以及文件存储只是众多可用操作中的几个例子。 电子表格数据不仅可以进行验证,还可以构建新的单元格数据形式。 它方便读取和写入文件以及处理 Excel 数据。

IronXL 最初发布时,售价为$799 。 或者,客户可以选择支付一年的订阅费,以获得软件更新和支持。 IronXL 提供收费的防未经授权再分发安全保障。 前往 IronXL 许可页面。 想了解更多关于Iron Software产品的信息,请点击这里

常见问题解答

我如何使用 C# 操作 Word 文档?

要使用 C# 操作 Word 文档,可以使用 Microsoft.Office.Interop.Word 库。这涉及创建 Word 应用程序的实例,打开文档,进行修改,并以编程方式保存文档。

使用 Microsoft Interop 操作 Word 文档的限制是什么?

使用 Microsoft Interop 的限制包括要求每台客户端 PC 安装有许可证的 Microsoft Word,可能出现版本兼容性问题,以及由于后台进程而导致的内存消耗增加。

如何在 Visual Studio 中设置一个 C# 项目以处理 Word 文档?

在 Visual Studio 中,可以通过选择控制台应用程序设置一个新项目,配置必要的项目详细信息,并确保选择正确的 .NET Framework 版本。然后需要通过 NuGet 包管理器添加对 Microsoft.Office.Interop.Word 的引用。

IronXL 和 Microsoft Interop 在处理 Excel 文件方面有什么区别?

IronXL 相对于 Microsoft Interop 提供了优势,如不需要安装 Excel,提供更好的性能,并拥有更简单的 Excel 文件操作 API。它还消除了与 Interop 方法相关的兼容性问题。

我如何在我的.NET项目中安装IronXL?

要在您的 .NET 项目中安装 IronXL,请在 Visual Studio 中打开 NuGet 包管理器控制台并执行命令 Install-Package IronXL.Excel。您也可以在 NuGet 包管理器 UI 中搜索 IronXL 并直接安装。

如何在 C# 中使用 IronXL 编辑 Excel 文档?

使用 IronXL,您可以通过 WorkBook.Load 加载 Excel 文档,访问特定工作表,修改单元格值,并使用 WorkBook 和 WorkSheet 对象提供的方法保存工作簿。

使用 IronXL 操作 Excel 文件有什么好处?

IronXL 提供的优势包括提高的性能、易用性和平台独立性。它不需要安装 Excel,从而消除了依赖问题,并允许无缝集成到 .NET 应用程序中。

我可以在不使用 Microsoft Interop 的情况下自动化 Word 文档任务吗?

可以的,各种第三方库提供了 Microsoft Interop 的替代方案用于自动化 Word 文档任务,提供更简单的 API,并消除了安装 Microsoft Word 的需要。

Jordi Bardia
软件工程师
Jordi 最擅长 Python、C# 和 C++,当他不在 Iron Software 利用这些技能时,他就在游戏编程。分享产品测试、产品开发和研究的责任,Jordi 在持续的产品改进中增加了巨大的价值。多样的经验使他面临挑战并保持投入,他表示这是在 Iron Software 工作的最喜欢的方面之一。Jordi 在佛罗里达州迈阿密长大,并在佛罗里达大学学习计算机科学和统计学。