フッターコンテンツにスキップ
ワードツール

.NETワードライブラリの比較: 最良のものを見つける

Wordドキュメントの管理と操作は、さまざまなソフトウェアプロジェクトで一般的な要件です。 Wordドキュメントを扱うための.NET Wordライブラリはいくつかあります。

This article compares three notable open-source .NET libraries for working with Word documents: Office IMO, FileFormat.Words, and Microsoft Office Interop Word along with IronWord as a paid solution.

各.NETワードライブラリには独自の機能と制限があり、これらを理解することで、開発者は特定のニーズに合った適切なツールを選ぶことができます。

Office IMO

.NET Wordライブラリ(無料 & 有料ライブラリ比較):図1 - Office IMO NuGetパッケージウェブページ

OfficeIMOは、Microsoft Wordドキュメントの基本操作を扱う際に特に使いやすいと評判の、無料のオープンソース.NETライブラリです。 新しいドキュメントの作成や既存ファイルの読み込み、変更を行う際に、OfficeIMOは信頼できるライブラリでした。

このライブラリは、速度とシンプルさが最重要視されるプロジェクトにおいて特に有益でした。 そのシンプルで高速なAPIにより、テキストの追加、フォーマット、さらにはヘッダーやフッターといった基本的なドキュメント要素の操作といった共通作業を簡単に実行できます。 また、Wordドキュメントへの画像追加や、ドキュメント内のハイパーリンク追加などの操作もサポートしています。 しかし、行間隔のようなより高度な機能では力不足です。

長所

  • 使いやすさ: OfficeIMOはプロジェクトを迅速に立ち上げるための最高のライブラリです。 APIがシンプルで、広範な設定なしに共通タスクを実行しやすいです。
  • 複数文書のサポート: 複数のWordドキュメントを同時に扱うことができ、バッチ処理に対して効率的です。
  • 変換機能: Wordドキュメントを他の形式に変換する能力が、特にクライアントの多様な要件に対処する際にいくつかのプロジェクトで助けになりました。
  • バッチ処理: 複数のドキュメントを同時に処理することは効率的で効果的で、大量操作において特に有用であると感じました。

短所

  • 高度な機能の制限: 複雑なドキュメントタスクに対して、OfficeIMOは力不足です。 基本的な作業には最適ですが、より複雑な操作には苦労します。
  • Microsoft Wordへの依存: Microsoft Wordのインストールが必要なことは、多様なデプロイ環境において大きな欠点です。

FileFormat.Words

.NET Wordライブラリ(無料 & 有料ライブラリ比較):図2 - FileFormatウェブページ

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です。 このライブラリは、MicrosoftのOffice自動化スイートの一部であり、Wordドキュメント操作の領域で並外れた機能を提供する巨人として立っています。

Interop Wordは、Microsoft Wordで利用可能な機能の完全なスペクトラムに直接アクセスできるように優れています。 それはまるで、Wordのすべての機能をプログラム的に指先で使えるかのようです。

テキスト編集のような単純なタスクから、組み込みドキュメントプロパティの操作、段落のフォーマット、メールマージの実行、OLEオブジェクトを取り扱うなど、複雑な操作までこのライブラリは広範な技術機能をカバーしています。 Interopは、ファイルタイプ間の変換も可能です。例えば、WordをPDFに変換したり、Wordを画像に変換したり、WordをRTFやHTMLに変換することも、その幅広い範囲を示しています。

長所

  • 包括的な機能範囲: Microsoft Word自体の能力を密接に反映する、多数の機能を提供しています。
  • Wordとの高い親和性: シームレスな統合により、ドキュメントの操作がWordのユーザーエクスペリエンスに一致しており、私が手掛ける多くのプロジェクトでは重要な要素です。
  • 詳細制御: Wordドキュメント要素に対する詳細なレベルの制御と管理が他に例を見ないほどで、正確で複雑なドキュメント操作が可能です。

短所

  • MS Officeへの依存: MS Officeのインストールが必要とされることは重要な制限であり、特定の環境での使用を制限します。
  • パフォーマンスに関する懸念点: COMベースのインターロップであるため、特にサーバーサイドや高性能アプリケーションでは効率が悪くなる可能性があります。

IronWord: MSなしのDOCXライブラリ

.NET Wordライブラリ(無料 & 有料ライブラリ比較):図4 - IronWord:  MSなしのDOCXライブラリウェブページ

IronWordは、Microsoft Wordがターゲットマシンにインストールされていなくても、Wordファイルとの対話を簡単にし、開発者がドキュメントの読み取り、書き込み、編集を可能にします。この機能は、Microsoft Officeの存在を保証できないさまざまな環境にデプロイする必要のあるアプリケーションに特に有用です。 クロスコンパチビリティに加えて、.NET Coreと.NETフレームワークのさまざまなバージョンをサポートしています。

ライブラリの設計は、シンプルで効果的なドキュメント管理アプローチを提供することに焦点を当てており、開発者が.NETアプリケーションにWordドキュメントの機能を統合するのを手軽にします。 DOCおよびDOCXを含む、広く使用されるファイル形式を幅広くサポートすることで、IronWordは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ドキュメント出力

結論

Wordドキュメント操作のための適切な.NETライブラリを選ぶには、特定のプロジェクトニーズに大きく左右されます。 Office IMOはシンプルなタスクに最適で、FileFormat.Wordsはより複雑なシナリオ、MS Office Interop Wordは深いWord統合のために最適です。

開発者として私たちの選択は、環境、必要なドキュメント操作の複雑さ、Wordドキュメントに対する制御レベルといった要素を考慮に入れて、プロジェクトの要件に合致すべきです。

IronWordは、提供する幅広い機能性と利便性を考慮すると価値のある投資であり、合理的な価格点で無料試用を提供しています。

Jordi Bardia
ソフトウェアエンジニア
Jordiは、最も得意な言語がPython、C#、C++であり、Iron Softwareでそのスキルを発揮していない時は、ゲームプログラミングをしています。製品テスト、製品開発、研究の責任を分担し、Jordiは継続的な製品改善において多大な価値を追加しています。この多様な経験は彼を挑戦させ続け、興味を持たせており、Iron Softwareで働くことの好きな側面の一つだと言います。Jordiはフロリダ州マイアミで育ち、フロリダ大学でコンピュータサイエンスと統計学を学びました。