跳至頁尾內容
USING IRONWORD

如何在 C# 中建立 Word 文件

Microsoft 建立了 Word,用於作為文字處理器。 最初在 Xenix 系統下以 Multi-Tool Word 的名稱提供,於 1983年10月25日 推出。隨後版本涵蓋多種操作系統,如 SCO Unix (1990)、Microsoft Windows (1989)、Atari ST (1988)、OS/2 (1989)、AT&T UNIX PC (1985)、運行 DOS 的 IBM PC (1983)、運行經典 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 文件。

How To Manipulate Word Document Using C

  1. 建立一個全新的 Visual Studio 專案。
  2. 設置必要的函式庫以讀取 Word 文件。
  3. 要操作 Word 文件,載入一個現有文件或建立一個新文件。
  4. 編輯文件資料並解析文件。
  5. 刪除所有建立的物件。

什麼是微軟 Interop

using C# 或 VB.NET 編寫的程式可以使用 Office 互操作性 建立或打開 Word 文件(DOC、DOCX 和 RTF)。 然而,在項目中使用時,它存在很多缺點。

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

例如:

  • 每台需要用於 word 自動化的客戶端 PC 都需要為 Microsoft Word 許可。
  • 在每位客戶的 PC 上,必須安裝相同版本的 Microsoft Word。
  • 當使用自動化時,Word 會在後台使用一些兆字節的 RAM 來載入不同的文件和 DLL。
  • 透過 COM 物件存取 Microsoft Word API。 從托管程式碼調用 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

IronXL.Excel How To Manipulate A Word document Using C#: Figure 4 - For installing the IronXL library, you can use the Package Manager Console and enter the given command: `Install-Package IronXL.Excel`

using NuGet 包管理器的另一種尋找"Interop" 封裝的方法。 在所有與 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 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 文件。

using IronXL 而非 Microsoft Interop 有多種優勢,例如:

  • 性能和資源效率: IronXL 不依賴安裝到計算機上的 Excel 應用程式,與 Microsoft Interop 相比,它的性能更好並且使用的資源更少。
  • 易用性和簡單性: IronXL 提供了一個易於使用的 API,簡化了 Excel 文件的讀取、寫入和操作過程,而不涉及 Microsoft Interop 帶來的複雜性。
  • 相容性和依賴性: IronXL 不需要安裝 Microsoft Excel 到計算機上,因此消除了可能與不同版本的 Excel 或 Office 發生相容性問題的依賴性和相容性問題。
  • 平台獨立性: 與 Microsoft Interop 可能更加關聯於特定 Microsoft Office 版本不同,IronXL 提供了更大的靈活性和更易於在各種環境和平台上部署。

對於必須以編程方式操控 Excel 文件的.NET 開發者而言,IronXL 通常是一個更好的選擇,因為它的易用性、速度和對第三方軟體安裝的依賴性更低。 然而,IronXL 和 Microsoft Interop 之間的決策可能會受專案的具體情況、已存在的基礎設施以及使用者對於各函式庫的熟悉程度影響。

在選擇這些選項時,務必考慮您的應用程式的需求。 查看這個 連結 以了解更多關於 IronXL 函式庫的資訊。

安裝 IronXL 函式庫

由於即將推出的補丁需要 IronXL 函式庫,因此需要安裝它。 要完成此操作,請打開 NuGet 包管理控制台並輸入以下命令:

Install-Package IronWord

如何使用 C# 操作 Word 文件:圖 6 - 使用控制台命令安裝 IronXL IronXL.Excel 通過 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,因為它是自包含的。 它通過多個渠道進行操作。 這與必須藉由額外函式庫解析文件來編輯 Word 文件的 Interop 函式庫形成對比。

IronXL 是任何利用 Microsoft Excel 文件的編程過程的完整解決方案。 計算、排序字串或數字、修剪、新增、查找和替換、合併和取消合併以及文件儲存只是許多可用操作中的一小部分。 不僅可以驗證試算表資料,您還可以構建新型態的單元格資料。 它促進了文件的讀寫以及 Excel 資料的處理。

IronXL 最初推出時,價格為 $999。 或者,客戶可以選擇支付一年的訂閱費來獲取軟體更新和支持。 IronXL 收取一定費用,提供防止未經授權重新發行的安全。 前往 IronXL 授權頁面。 要了解有關 Iron Software 產品的更多資訊,請查看這裡

常見問題

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

要使用C#操控Word文件,可以使用Microsoft.Office.Interop.Word庫。這涉及建立Word應用程式的實例,打開文件,進行更改,然後以編程方式保存文件。

使用Microsoft Interop操控Word文件的限制是什麼?

使用Microsoft Interop 的限制包括每個客戶端PC都需安裝受許可的Microsoft Word,可能的版本相容性問題,以及由于後台進程引起的記憶體消耗增加。

我怎樣才能在Visual Studio中設立一個操作Word文件的C#專案?

在Visual Studio 中,您可以通過選擇控制台應用程式來設立新專案,配置必要的專案詳細資訊,並確保選擇正確的.NET Framework版本。然後需要通過NuGet Package Manager新增對Microsoft.Office.Interop.Word的引用。

IronXL和Microsoft Interop在處理Excel文件方面有什麼不同?

IronXL相較於Microsoft Interop有優勢,無需安裝Excel,提供更好的性能,並擁有較簡單的API來操作Excel文件。同時消除了與Interop方法相關的相容性問題。

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

要在您的.NET專案中安裝IronXL,請在Visual Studio中打開NuGet Package Manager控制台並執行指令Install-Package IronXL.Excel。您也可以在NuGet Package Manager UI中搜索IronXL並直接安裝。

我如何使用IronXL在C#中編輯Excel文件?

使用IronXL,您可以通過WorkBook.Load載入Excel文件,存取特定工作表,修改單元格值並使用WorkBook和WorkSheet物件提供的方法保存工作簿來編輯Excel文件。

使用IronXL操作Excel文件有哪些優勢?

IronXL提供的優勢包括性能提升、易用性和平台獨立性。它不需要安裝Excel,從而消除了依賴性問題,並允許無縫整合至.NET應用程式中。

我可以不使用Microsoft Interop來自動化Word文件任務嗎?

是的,各種第三方庫為自動化Word文件任務提供了Microsoft Interop的替代方案,提供更簡單的API並消除了對Microsoft Word安裝的需求。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話