使用IRONWORD

如何使用 C# 操作 Word 文件

雷根·彭
雷根·彭
2023年十二月24日
分享:

介绍

微软创建了 Word 作为文字处理器。 最初在1983年10月25日以Multi-Tool Word for Xenix systems的名称发布,随后开发了适用于各种操作系统的版本,如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年)、网络浏览器(2010年)、iOS(2014年)和Android(2015年)。 Wine 可用于在 Linux 上运行旧版本的 Microsoft Word。

商业版Word可以作为独立应用程序获得许可,也可以作为Microsoft 365的一部分,可以通过永久许可证或Microsoft 365订阅的一部分购买。 在本文中,我们将使用C#和Microsoft Interop程序集来操作Word文档,并探索IronXL如何帮助我们编辑Excel文档。

如何使用 C# 操作 Word 文档;

  1. 创建一个全新的 Visual Studio 项目。

  2. 建立阅读 Word 文档所需的库。

  3. 要操作 Word 文档,请加载现有文件或创建新文件。

  4. 编辑文档数据并解析文件。

  5. 删除创建的所有对象。

什么是 Microsoft Interop

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

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

例如

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

在 Visual Studio 中创建新项目

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

如何使用 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 库。 在 NuGet 软件包管理器控制台中输入以下命令即可完成翻译:

:InstallCmd: 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 System.Data;
using Microsoft.Office.Interop.Word;
try
{
    var WordApp = new Microsoft.Office.Interop.Word.Application();
    var WordDoc = WordApp.Documents.Open(@"d:/Demo.docx");
    WordDoc.Paragraphs [1].Range.Text = "New text here...";
    WordDoc.SaveAs(@"d:/NewDemo.docx");
    WordDoc.Close();
    WordApp.Quit();
}
catch (Exception ex)
{
    Console.WriteLine(ex.ToString());
}
using System;
using System.Data;
using Microsoft.Office.Interop.Word;
try
{
    var WordApp = new Microsoft.Office.Interop.Word.Application();
    var WordDoc = WordApp.Documents.Open(@"d:/Demo.docx");
    WordDoc.Paragraphs [1].Range.Text = "New text here...";
    WordDoc.SaveAs(@"d:/NewDemo.docx");
    WordDoc.Close();
    WordApp.Quit();
}
catch (Exception ex)
{
    Console.WriteLine(ex.ToString());
}
Imports System
Imports System.Data
Imports Microsoft.Office.Interop.Word
Try
	Dim WordApp = New Microsoft.Office.Interop.Word.Application()
	Dim WordDoc = WordApp.Documents.Open("d:/Demo.docx")
	WordDoc.Paragraphs (1).Range.Text = "New text here..."
	WordDoc.SaveAs("d:/NewDemo.docx")
	WordDoc.Close()
	WordApp.Quit()
Catch ex As Exception
	Console.WriteLine(ex.ToString())
End Try
$vbLabelText   $csharpLabel

在上述代码中,我们能够用 C# 编辑 Word 文档。 首先,我们要为 Interop 使用的文字处理器创建一个项目对象。 在所创建对象的帮助下,我们可以通过该对象的打开方式传递现有 Word 文件名。 它可以帮助我们将文件转换为文档对象。

通过使用文档对象,我们可以获得与现有 Word 文档相关的所有可用流程。 然后,我们使用段落对象获取 DOCX 文件中的所有内容。 使用数组,我们可以通过在数组中传递特定段落来替换每个段落的文本。 然后,我们可以将它们以 DOCX 文件的形式保存到新的 MS Word 文档中。我们还可以使用 Interop.NET 创建 Word 文档。

IronXL 库替代 Interop

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

利用 IronXL 代替 Microsoft Interop 有以下几个好处:

  • 性能和资源效率:IronXL.Excel 依赖于计算机上安装的 Excel 应用程序,与 Microsoft Interop 相比,IronXL.Excel 不依赖于 Excel 应用程序,因此性能更好,占用资源更少。
  • 易用性和简单性:IronXL.Excel 提供了更易于使用的应用程序接口(API),可简化 Excel 文件的读写和操作,而不会像 Microsoft Interop 那样带来复杂性。
  • 兼容性和依赖性:IronXL.Excel 不需要在计算机上安装 Microsoft Excel,从而消除了各种版本 Excel 或 Office 可能出现的依赖性和兼容性问题。
  • 平台独立性:IronXL 与 Microsoft Interop 不同,后者可能与特定的 Microsoft Office 版本有更密切的联系,而 IronXL 则具有更大的灵活性,易于在各种环境和平台上部署。

    对于必须以编程方式操作 Excel 文件的 .NET 开发人员来说,IronXL.Excel 通常是更好的选择,因为它易于使用、速度快,而且减少了对第三方软件安装的依赖。 不过,在 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 编辑 Excel 文档

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

var workbook = IronXL.WorkBook.LoadExcel("Demo file.xlsx");
WorkSheet ws = workbook.GetWorkSheet("Sheet1");
string address_val = ws ["A1"].ToString();
console.writeline(address_val);
ws ["A2"].Value = "Hello World";
workbook.SaveAs("export.xlsx");
//or
workbook.SaveAs("export.xls");
//or
workbook.WorkSheets [0].SaveAs("export.xls");
var workbook = IronXL.WorkBook.LoadExcel("Demo file.xlsx");
WorkSheet ws = workbook.GetWorkSheet("Sheet1");
string address_val = ws ["A1"].ToString();
console.writeline(address_val);
ws ["A2"].Value = "Hello World";
workbook.SaveAs("export.xlsx");
//or
workbook.SaveAs("export.xls");
//or
workbook.WorkSheets [0].SaveAs("export.xls");
Dim workbook = IronXL.WorkBook.LoadExcel("Demo file.xlsx")
Dim ws As WorkSheet = workbook.GetWorkSheet("Sheet1")
Dim address_val As String = ws ("A1").ToString()
console.writeline(address_val)
ws ("A2").Value = "Hello World"
workbook.SaveAs("export.xlsx")
'or
workbook.SaveAs("export.xls")
'or
workbook.WorkSheets (0).SaveAs("export.xls")
$vbLabelText   $csharpLabel

前面的例子通过调用LoadExcel函数加载一个已经存在的Excel文件,该函数接受文件路径和名称作为参数。 将文件导入到Workbook对象现在已完成。 然后使用GetWorkSheet帮助加载Excel工作表,这使我们可以通过工作表名称加载工作表。 然后使用 Excel 地址读取数值。 要了解更多关于读取 Excel 文件的信息,请点击此处

我们可以通过使用相同的 Excel URL 来更改 Excel 表的值。 可以通过使用 'Workbook' 对象提供的 SaveAs 函数,将 Excel 文档保存为 XLSX 或 XLS 文件。 使用此流程,整个文件将以所选格式保存。

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

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

结论

Excel最受欢迎的附加组件之一是IronXL。 它不依赖任何额外的外部库。 由于 Microsoft Excel 是自带的,因此无需安装。 它通过多种渠道运作。 这与 Interop 库形成鲜明对比,后者必须使用额外的库来解析文件,以便编辑 Word 文档。

IronXL.Excel 是适用于任何利用 Microsoft Excel 文档进行编程过程的完整解决方案。 计算、对字符串或数字排序、剪枝、添加、查找和替换、合并和取消合并以及文件存储只是众多可用操作中的一小部分。 不仅可以验证电子表格数据,还可以构建新形式的单元格数据。 它有助于读写文件和处理 Excel 数据。

当IronXL首次发布时,售价为$749。 此外,客户还可以选择支付一年的订阅费来获得软件更新和支持。 IronXL 将提供安全保障,防止未经授权的再分发。 请访问IronXL许可页面。 要了解更多关于 Iron Software 产品的信息,请查看这里

雷根·彭
软件工程师
Regan毕业于雷丁大学,拥有电子工程学士学位。在加入Iron Software之前,他的前工作职位要求他专注于单一任务;他在Iron Software最喜欢的是能进行多种工作,无论是增加销售价值、技术支持、产品开发还是营销。他喜欢了解开发人员如何使用Iron Software的库,并利用这些知识不断改进文档和开发产品。
< 前一页
如何使用C#读取Word文件
下一步 >
如何在C#中创建Word文档

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

查看许可证 >