跳過到頁腳內容
文字工具

.NET 字庫比較:尋找最佳

管理和處理 Word 文件是各種軟體專案中常見的需求。 有多個 .NET Word 程式庫可用於處理 Word 文件。

本文比較了三個用於處理 Word 文件的著名開源 .NET 程式庫:Office IMO、FileFormat.Words 和Microsoft Office Interop Word,以及作為付費解決方案的IronWord

每個 .NET Word 庫都有其獨特的功能和限制,了解這些有助於開發人員為其特定需求選擇合適的工具。

國際海事組織辦公室

! .NET Word 庫(免費和付費庫比較):圖 1 - Office IMO NuGet 套件網頁

OfficeIMO是一個免費的開源 .NET 庫,它以用戶友好的方式脫穎而出,尤其是在處理 Microsoft Word 文件中的基本操作時。 無論是建立新文件、讀取現有文件或進行修改,OfficeIMO 都是一個可靠的函式庫。

該庫在以速度和簡潔性為首要考慮的項目中尤為有用。 憑藉其簡單快速的 API,我能夠輕鬆執行添加文字、格式化甚至操作頁首頁尾等基本文件元素等常見任務。 該程式庫還支援向 Word 文件新增圖像以及在文件中新增超連結等操作。 然而,它在行間距等更高級的功能方面有所欠缺。

優點

-易用性: OfficeIMO 是快速設定專案的最佳程式庫。 它的 API 很簡單,無需進行大量設定即可輕鬆執行常見任務。 -支援多文檔處理:允許同時處理多個 Word 文檔,這對於批次處理來說非常有效率。 -轉換功能:該程式庫將 Word 文件轉換為其他格式的功能在我的多個專案中發揮了救命作用,尤其是在處理各種客戶需求時。 -批量處理:同時處理多個文件既高效又有效,我發現這項功能在批量操作中特別有用。

缺點

-高級功能有限:對於複雜的文件處理任務,OfficeIMO 的功能不足。 它在基礎操作方面表現出色,但在處理更複雜的操作時則略顯吃力。 -對 Microsoft Word 的依賴:必須安裝 Microsoft Word 是一個明顯的缺點,尤其是在多樣化的部署環境中。

文件格式.Words

! .NET Word 庫(免費和付費庫對比):圖 2 - 文件格式網頁

當 Office IMO 的限制顯現出來時,尤其是在進行更複雜的文檔操作時,我的下一個選擇是FileFormat.Words 。 該庫是一個綜合性工具,在處理 Word 文件方面提供了更廣泛的功能。

FileFormat.Words 因其廣泛的文件格式支援而脫穎而出,這對於涉及舊文件或不同 Microsoft Word 版本的專案至關重要。 它的優勢在於精細的文件操作能力,從複雜的郵件合併到自訂文件屬性和處理 OLE 物件。

優點

-廣泛的文件格式支援:該程式庫能夠處理各種文件格式,並轉換 Word 文檔,尤其是在處理較舊或非標準文檔時,其效能最佳。 -進階文件元素操作:允許對文件元素進行詳細操作,包括自訂文件屬性和 OLE 物件。 -無外部相依性:與其他一些函式庫不同,FileFormat.Words 不需要 Microsoft Office 自動化,因此更適合伺服器環境。

缺點

-複雜性:豐富的功能也帶來了更高的複雜性,這可能會為初學者帶來學習曲線。 -效能影響:在大規模應用中,進階功能可能會影響效能,需要進行最佳化和謹慎的資源管理。

Microsoft Office Interop Word

.NET Word 庫(免費和付費庫比較):圖 3 - MS Office Interop Word 網頁

在需要深度整合和全面控制 Microsoft Word 文件的情況下,我的首選是MS Office Interop Word 。 作為微軟 Office 自動化套件的一部分,該程式庫在 Word 文件處理領域堪稱巨頭,提供無與倫比的功能。

Interop Word 的優點在於能夠直接存取 Microsoft Word 的所有功能。 這就像透過程式設計方式,讓你能夠輕鬆掌控 Word 的所有功能。

從簡單的文字編輯任務到更複雜的操作,例如處理內建文件屬性、格式化段落、執行郵件合併以及使用 OLE 對象,該程式庫涵蓋了廣泛的技術功能。 Interop 也支援檔案類型之間的轉換。例如,您可以將 Word 文件轉換為 PDF、圖片、RTF 和 HTML,充分展現了其廣泛的功能。

優點

-功能全面:它提供了一系列廣泛的功能,與 Microsoft Word 本身的功能非常接近。 -與 Word 高度相容:無縫整合確保文件操作與 Word 使用者體驗保持一致,這在我的許多專案中都是一個關鍵因素。 -精細控制:對 Word 文件元素的精細控製程度無與倫比,可以進行精確而複雜的文檔操作。

缺點

-對 MS Office 的依賴:對 MS Office 安裝的要求是一個重大限制,限制了它在某些環境中的使用。 -效能問題:作為一種基於 COM 的互通,它的效率可能較低,尤其是在伺服器端或高效能應用程式中。

IronWord:一個不需要微軟的 DOCX 函式庫

.NET Word 函式庫(免費和付費函式庫比較):圖 4 - IronWord:一個無需微軟網頁的 DOCX 函式庫

IronWord簡化了與 Word 文件的交互,使開發人員無需在目標電腦上安裝 Microsoft Word 即可讀取、寫入和編輯文件。此功能對於需要在各種環境中部署的應用程式尤其有利,因為這些環境無法保證都安裝了 Microsoft Office。 除了具有跨平台相容性之外,它還支援各種版本的 .NET Core 和 .NET 框架。

該程式庫的設計重點在於提供一種簡單有效的文件管理方法,使開發人員能夠輕鬆地將 Word 文件功能整合到他們的 .NET 應用程式中。 IronWord 支援多種常用文件格式,包括 DOC 和 DOCX,使開發人員能夠以高效可靠的方式處理 Word 文件的建立和操作。

IronWord 旨在彌合 .NET 應用程式和文件管理之間的差距,為需要整合文件處理功能但又不想面對傳統此類任務複雜性的開發人員提供強大的解決方案。

建立帶有樣式文字的 DOCX

在這裡,您可以看到如何使用 IronWord建立帶有樣式文字的 Word 文件

using IronWord;
using IronWord.Models;
using Color = IronSoftware.Drawing.Color;

// Initialize a new Word document
var document = new WordDocument();

// Define a new text style
var textStyle = new TextStyle
{
    FontFamily = "Arial", 
    FontSize = 24, 
    TextColor = new IronColor(Color.Blue), 
    IsBold = false, 
    IsItalic = false,
    IsUnderline = false, 
    IsStrikethrough = false,
    IsSuperscript = false, 
    IsSubscript = false 
};

// Create a text run with new text and style
var textRun = new TextRun
{
    Text = "Exploring Document Creation with IronWord",
    Style = textStyle
};

// Initialize a new paragraph
var paragraph = new Paragraph();

// Add the styled text run to the paragraph
paragraph.AddTextRun(textRun);

// Add the paragraph to the document
document.AddParagraph(paragraph);

// Save the modified document under a new name
document.SaveAs("updated_document.docx");
using IronWord;
using IronWord.Models;
using Color = IronSoftware.Drawing.Color;

// Initialize a new Word document
var document = new WordDocument();

// Define a new text style
var textStyle = new TextStyle
{
    FontFamily = "Arial", 
    FontSize = 24, 
    TextColor = new IronColor(Color.Blue), 
    IsBold = false, 
    IsItalic = false,
    IsUnderline = false, 
    IsStrikethrough = false,
    IsSuperscript = false, 
    IsSubscript = false 
};

// Create a text run with new text and style
var textRun = new TextRun
{
    Text = "Exploring Document Creation with IronWord",
    Style = textStyle
};

// Initialize a new paragraph
var paragraph = new Paragraph();

// Add the styled text run to the paragraph
paragraph.AddTextRun(textRun);

// Add the paragraph to the document
document.AddParagraph(paragraph);

// Save the modified document under a new name
document.SaveAs("updated_document.docx");
Imports IronWord
Imports IronWord.Models
Imports Color = IronSoftware.Drawing.Color

' Initialize a new Word document
Private document = New WordDocument()

' Define a new text style
Private textStyle = New TextStyle With {
	.FontFamily = "Arial",
	.FontSize = 24,
	.TextColor = New IronColor(Color.Blue),
	.IsBold = False,
	.IsItalic = False,
	.IsUnderline = False,
	.IsStrikethrough = False,
	.IsSuperscript = False,
	.IsSubscript = False
}

' Create a text run with new text and style
Private textRun = New TextRun With {
	.Text = "Exploring Document Creation with IronWord",
	.Style = textStyle
}

' Initialize a new paragraph
Private paragraph = New Paragraph()

' Add the styled text run to the paragraph
paragraph.AddTextRun(textRun)

' Add the paragraph to the document
document.AddParagraph(paragraph)

' Save the modified document under a new name
document.SaveAs("updated_document.docx")
$vbLabelText   $csharpLabel

利用 IronWord,我們可以以程式設計方式設定字體系列、字體大小、文字顏色和其他文字格式選項。 程式碼建立了一個名為textStyle變量,用於保存所有文字格式設定變數。 然後將textStyle賦值給新的TextRun物件的Style屬性。 然後,該範例使用變數初始化一個新段落,將該段落新增到文件中,然後儲存它。 這樣就可以透過更改textStyle變數中的參數輕鬆修改文本,展現了 IronWord 的多功能性和靈活性。

輸出

以下是程式碼的輸出:

.NET Word 庫(免費和付費庫比較):圖 5 - 上述程式碼範例產生的 Word 文件輸出

結論

選擇合適的 .NET 程式庫來處理 Word 文件很大程度上取決於您的特定專案需求。 Office IMO 非常適合簡單的任務,FileFormat.Words 適合更複雜的場景,而 MS Office Interop Word 則適合深度 Word 整合。

作為開發人員,我們的選擇應該符合專案的要求,考慮環境、所需文件操作的複雜性以及 Word 文件所需的控制等級等因素。

IronWord 提供免費試用,起價合理,其強大的功能和便利的使用體驗使其成為值得的投資。

Curtis Chau
技術撰稿人

Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。