跳過到頁腳內容
使用 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)、AT&T UNIX PC (1985)、執行 DOS 的 IBM PC (1983)、 190175 年運行的 Applepix、Webp、Eppppp、 (2010)、iOS (2014) 和 Android (2015)。 Wine 可用於在 Linux 系統上執行舊版的 Microsoft Word。

商業版 Word 可以作為獨立應用程式或Microsoft 365的元件進行許可,Microsoft 365 可以購買永久許可或作為 Microsoft 365 訂閱的一部分。 在本文中,我們將在使用 Microsoft Interop 程式集的幫助下使用 C# 操作 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 庫

下一次修復需要安裝互通性庫。 若要完成此操作,請在 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 中,您可以透過選擇 Console Application、設定必要的專案細節,並確保選擇正確的 .NET Framework 版本,來建立新的專案。然後,您需要透過 NuGet Package Manager 新增 Microsoft.Office.Interop.Word 的參照。

IronXL.Excel 與 Microsoft Interop 在處理 Excel 檔案上有何差異?

與 Microsoft Interop 相比,IronXL.Excel 具備多項優勢,例如不需要安裝 Excel、提供更好的效能,以及擁有更簡單的 Excel 檔案操作 API。它還消除了與 Interop 方法相關的相容性問題。

如何在我的 .NET 專案中安裝 IronXL?

若要在您的 .NET 專案中安裝 IronXL,請在 Visual Studio 中開啟 NuGet 套件管理員控制台,並執行指令 Install-Package IronXL.Excel。您也可以在 NuGet Package Manager UI 中搜尋 IronXL 並直接安裝。

如何使用 C# 中的 IronXL.Excel 編輯 Excel 文件?

使用 IronXL,您可以使用 WorkBook.Load 載入 Excel 文件、存取特定工作表、修改儲存格值,並使用 WorkBook 和 WorkSheet 物件提供的方法儲存工作簿,藉此編輯 Excel 文件。

使用 IronXL.Excel 處理 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 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。