使用IRONWORD

如何使用C#操作Word文件

里根普恩
里根普恩
2023年12月24日
分享:

介紹

微軟創建了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 訂閱的一部分。 在本文中,我們將使用 C# 和 Microsoft Interop 程式集操作 Word 文檔,並探討 IronXL 如何幫助我們編輯 Excel 文檔。

如何使用 C# 操作 Word 文件

  1. 建立一個全新的 Visual Studio 專案任務。

  2. 設置必要的庫以讀取 Word 文件。

  3. 若要操作 Word 文件,請載入現有文件或建立新文件。

  4. 編輯文件資料並解析文件。

  5. 清除所有已創建的對象。

什麼是 Microsoft Interop

C# 或 VB.NET 編寫的程式可以使用適用於 Microsoft Word 的 Office Interoperability 來建立或開啟 Word 文件(DOC、DOCX 和 RTF)。 然而,在專案中使用時有很多缺點。

我們將在本文中討論在使用 C# 或 VB.NET 從 Microsoft Office Interop (Word Automation) 時您可能遇到的常見問題。

例如:

  • 每台需要進行文字自動化的客戶電腦都需獲得 Microsoft Word 的授權。
  • 在每位客戶的電腦上,必須安裝相同版本的 Microsoft Word。
  • 當使用自動化時,Word會使用幾兆字節的記憶體以在背景中載入不同的檔案和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。 此專案將使用 .NET Framework 4.7。 接下來的操作是按下「Create」按鈕。

在應用程式生成解決方案後,您可以通過訪問 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 文件。

使用 Interop 操作現有的 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 文件中所有可用的內容。 使用陣列,我們可以透過將特定段落傳入陣列來替換每一段的文字。 然後,我們可以將它們儲存為新的 MS Word 文件,作為 DOCX 檔案。我們也可以使用 Interop 來建立 Word 文件。

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 文件匯出到簡單的表格格式中:

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 網址來更改 Excel 表格中的值。 Excel 文件可以通过 'Workbook' 对象提供的 SaveAs 函数保存为 XLSX 或 XLS 文件。 使用此過程,整個文件將以選擇的格式保存。

如何使用C#操作Word文件:圖8 - 控制台輸出

此外,我們可以透過使用其索引值或參照名稱來選擇特定的 Excel 工作表。 接下來,我們可以使用SaveAs選項將Excel試算表中的數據匯出到不同的檔案。 點擊這個鏈接了解更多關於格式化和導出 Excel 文件的信息。

結論

對於 Excel 而言,IronXL 是最受歡迎的附加元件之一。 它不依赖于任何其他外部库。 不需要安裝 Microsoft Excel,因為它是自包含的。 它通過多個渠道運作。 這與Interop庫形成對比,後者必須使用額外的庫來解析文件以編輯Word文件。

IronXL 是一個適用於任何使用 Microsoft Excel 文件的程式開發過程的完整解決方案。 計算、排序字串或數字、修剪、添加、查找和替換、合併和拆分以及檔案儲存只是眾多可用操作中的一部分。 不僅可以驗證試算表數據,還可以構建新形式的單元格數據。 它有助於讀取和寫入文件以及處理 Excel 數據。

IronXL剛推出時,售價為$749。 或者,客戶可以選擇支付一年訂閱費以獲得軟體更新和支援。 IronXL 提供防止未經授權重新分發的安全性,但需支付費用。 前往 IronXL 許可證頁面。 如需了解更多關於 Iron Software 產品的信息,請點擊此處

里根普恩
軟體工程師
Regan 畢業於雷丁大學,擁有電子工程學士學位。在加入 Iron Software 之前,他的工作角色讓他專注於單一任務;而他在 Iron Software 工作中最喜歡的是他所能承擔的工作範圍,無論是增加銷售價值、技術支持、產品開發或市場營銷。他喜歡了解開發人員如何使用 Iron Software 庫,並利用這些知識不斷改進文檔和開發產品。
< 上一頁
如何使用 C# 讀取 Word 檔案
下一個 >
如何在 C# 中建立 Word 文件

準備開始了嗎? 版本: 2025.4 剛剛發布

查看許可證 >