How To Manipulate A Word document Using C#
マイクロソフトは、ワードプロセッサとしてワードを作成しました。 最初はマルチツール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を実行できます。
Microsoft 365のスタンドアロンアプリケーションまたはコンポーネントとしてライセンスされた商用Wordバージョンは、永久ライセンスとして購入するか、Microsoft 365サブスクリプションの一部として購入できます。 この記事では、Microsoft Interopアセンブリを使ってC#でワード文書を操作し、Excel文書を編集するのにIronXLがどのように役立つかを探ります。
How To Manipulate Word Document Using C
- 新しいVisual Studioプロジェクトを作成します。
- Wordドキュメントを読み取るために必要なライブラリを設定します。
- Wordドキュメントを操作するには、既存のファイルを読み込むか新しいファイルを作成します。
- ドキュメントデータを編集し、ファイルを解析します。
- 作成したすべてのオブジェクトを削除します。
Microsoft Interopとは何ですか
C#やVB.NETで書かれたプログラムは、Microsoft WordのOffice相互運用性を使用してWordドキュメント(DOC、DOCX、RTF)を作成または開くことができます。 しかし、プロジェクトで使用すると、多くの欠点があります。
この記事では、C#またはVB.NETからMicrosoft Office Interop(Word Automation)を使用する際に遭遇する可能性がある一般的な問題について説明します。
例えば:
- ワード自動化に必要なすべてのクライアントPCは、Microsoft Wordのライセンスが必要です。
- すべてのクライアントのPCには、同じバージョンのMicrosoft Wordをインストールする必要があります。
- 自動化が利用されると、WordはバックグラウンドでさまざまなファイルとDLLをロードするためにいくつかのメガバイトのRAMを使用します。
- Microsoft Word APIは、COMオブジェクトを通じてアクセスされます。 管理コードからCOMオブジェクトを呼び出すときに、型変換やCOMラッパーが必要なこと、.NET Frameworkとの統合が不十分なことなどの問題が発生する可能性があります。
Visual Studioで新しいプロジェクトを作成する
Interopライブラリを使用する前に、Visual Studioを起動して.NETプロジェクトを作成する必要があります。 Visual Studioはどのバージョンでも互換性がありますが、最新のものが推奨されます。 必要に応じて、プロジェクトテンプレートを開発することも、Windows Formsに似たアプリケーションを開発することもできます。 この場合、簡単のためにコンソールアプリケーションを使用します。

プロジェクト詳細の構成
次に、プロジェクトの場所と名前を指定します。

.NET Frameworkを使用して新しいプロジェクトファイルを作成する
Frameworkドロップダウンメニューを使用して、.NET Frameworkを選択できます。 このプロジェクトでは、Dot.NET Framework 4.7を使用します。 次の操作は、"Create"ボタンを押すことです。
アプリケーションがソリューションを生成した後、Program.csファイルにアクセスしてコードを入力し、ビルドまたはプログラムを実行できます。

ライブラリMicrosoft.Office.Interop.Wordが追加されたので、コードをテストすることができます。
Interopライブラリをインストールする
次の修正には、Interopライブラリのインストールが必要です。 これを達成するには、NuGetパッケージマネージャーコンソールで次のコマンドを入力します:
Install-Package Microsoft.Office.Interop.Word

パッケージ"Interop"を見つけるもう一つの方法は、NuGetパッケージマネージャーを使用することです。 Interopに関連するすべてのNuGetパッケージの中から、必要なパッケージをダウンロードリストから選択できます。

必要なライブラリをすべてインストールしたら、DOCXファイルの編集を開始できます。
Interopを使用して既存のWordドキュメントを操作する
Microsoft Wordを使用するには、まずMicrosoft.Office.Interop.Word.Applicationのインスタンスを作成する必要があります。 Wordドキュメントの通信は、このインスタンスで行われます。 次のステップは、作成した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
上記のコードでは、C#でWordドキュメントを編集することができます。 まずInteropを使用してWordアプリケーションのインスタンスを作成し、Openメソッドを使用して既存のWordファイルを開き、文書オブジェクトに変換します。 これにより、ドキュメントと対話するために利用可能ないくつかのプロパティとメソッドにアクセスできます。 例では、最初の段落のテキストを更新するために、Paragraphsコレクションとインデックスを使用して編集する段落を指定します。 最後に、SaveAsで変更を保存し、文書とアプリケーションを適切に閉じます。
Interopに代わるIronXLライブラリ
IronXLは、.NETプログラムでExcelファイルを操作するためのMicrosoft Interopの代替手段です。 Microsoft InteropがExcelをInteropアセンブリを介して操作する必要がある一方で、IronXLは、.NETコンテキストでExcelファイルをプログラムによって操作するためのより簡単で、効果的で強力な方法を提供します。
Microsoft Interopの代わりにIronXLを使用することには、いくつかの利点があります。例えば:
-パフォーマンスとリソース効率:コンピュータにExcelアプリケーションがインストールされていることを前提とするMicrosoft Interopと比較して、 IronXLはExcelアプリケーションに依存しないため、パフォーマンスが向上し、使用するリソースも少なくなります。 -使いやすさとシンプルさ: IronXLは、Microsoft Interopに伴う複雑さを伴わずに、Excelファイルの読み書きや操作を簡素化する、使いやすいAPIを提供します。 -互換性と依存性: IronXLは、コンピュータにMicrosoft Excelをインストールする必要がないため、ExcelやOfficeのさまざまなバージョンで発生する可能性のある依存性や互換性の問題を解消します。 -プラットフォーム非依存性:特定のMicrosoft Officeバージョンと密接に関連している可能性のあるMicrosoft Interopとは異なり、 IronXLはさまざまな環境やプラットフォームにわたって、より高い柔軟性と容易な導入を実現します。
.NET開発者がExcelファイルをプログラムによって扱う必要がある場合、IronXLはその使いやすさ、速度、サードパーティのソフトウェアインストールへの依存の低減によってしばしば優れた選択肢とされます。 ただし、IronXLとMicrosoft Interopの選択は、プロジェクトの具体的な要件や既存のインフラストラクチャ、およびそれぞれのライブラリに対するユーザーの専門知識のレベルによって影響を受ける可能性があります。
これらのオプションの選択時には、常にアプリケーションの要件を考慮してください。 IronXLライブラリの詳細については、こちらのリンクをご覧ください。
IronXLライブラリをインストールする
今後のパッチに必要なIronXLライブラリをインストールします。 これを完了するには、NuGetパッケージマネージャーコンソールを開いて次のコマンドを入力します:
Install-Package IronWord

NuGetパッケージマネージャーを介してパッケージ"IronXL"を検索することも選択肢の一つです。このIronXLに関連するすべてのNuGetパッケージの中から、必要なものを選択してダウンロードできます。

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
前の例は、ファイルパスと名前の引数を取るLoad関数を呼び出すことで、すでに存在するExcelファイルを読み込みます。 ファイルをWorkBookオブジェクトにインポートすることが完了しました。 その後、GetWorkSheetの助けを借りてExcelワークシートが読み込まれ、シート名を使用してワークシートを読み込むことができます。 次に、Excelアドレスを使用して値を読み取ります。 Excelファイルの読み取りについては、ここ</a>をクリックして詳細を確認してください。
同じExcelアドレスを使用して、Excelシートの値を変更できます。 Excel文書は、SaveAs関数を使用して、XLSXまたはXLSファイルとして保存できます。 このプロセスを使用して、ファイル全体が選択された形式で保存されます。

また、インデックス値を使用したり、名前を指定して特定のExcelワークシートを選択できます。 次に、SaveAsオプションを使用して、Excelスプレッドシートから他のファイルへデータをエクスポートすることができます。 Excelファイルの書式設定とエクスポートに関する詳細を知るには、こちらをクリックしてください。
結論
IronXLは、Excel用の最も人気のあるアドオンの1つです。 追加の外部ライブラリに依存しません。 セルフコンテインされているため、Microsoft Excelをインストールする必要はありません。 複数のチャネルを介して動作します。 これは、Wordドキュメントを編集するために追加のライブラリを使用してファイルを解析する必要があるInteropライブラリとは対照的です。
Microsoft Excelドキュメントを利用するあらゆるプログラミングプロセスに対する完全なソリューションがIronXLです。 計算、文字列または数字のソート、枝刈り、追加、検索と置換、結合と非結合、ファイル保存など、利用可能な操作が多数あります。 スプレッドシートデータの検証だけでなく、新しい形式のセルデータを構築することも可能です。 ファイルの読み書きおよびExcelデータの操作を支援します。
IronXLが最初にリリースされたとき、その価格は$999でした。 または、顧客は1年間のサブスクリプション料を支払ってソフトウェアの更新とサポートを受け取ることを選択することができます。 料金を支払うことにより、IronXLは不正な再配布からの保護を提供します。 IronXLライセンスのページへ。 Iron Software製品について詳しくお知りになりたい方はこちらをご覧ください。
よくある質問
C#を使用してWordドキュメントを操作するにはどうすればよいですか?
C#を使用してWordドキュメントを操作するには、Microsoft.Office.Interop.Wordライブラリを使用できます。これは、Wordアプリケーションのインスタンスを作成し、ドキュメントを開き、変更を加え、プログラムでドキュメントを保存することを含みます。
Wordドキュメント操作においてMicrosoft Interopを使用する際の制限は何ですか?
Microsoft Interopを使用する際の制限には、クライアントPCごとにライセンス版のMicrosoft Wordが必要なこと、バージョンの互換性の問題が発生する可能性があること、バックグラウンドプロセスによりメモリ消費が増えることが含まれます。
Visual StudioでWordドキュメントを扱うC#プロジェクトをセットアップするにはどうすればよいですか?
Visual Studioでは、コンソールアプリケーションを選択し、必要なプロジェクトの詳細を構成し、適切な.NET Frameworkバージョンが選択されていることを確認することで新しいプロジェクトをセットアップできます。その後、NuGetパッケージマネージャーを通じてMicrosoft.Office.Interop.Wordへの参照を追加する必要があります。
Excelファイルを扱う際のIronXLとMicrosoft Interopの違いは何ですか?
IronXLは、Excelのインストールが不要で、より良いパフォーマンスを提供し、Excelファイル操作にとってよりシンプルなAPIを提供するなど、Microsoft Interopよりも多くの利点を提供します。また、Interop方式に関連する互換性の問題を排除します。
自分の .NET プロジェクトに IronXL をインストールするにはどうすればよいですか?
.NETプロジェクトにIronXLをインストールするには、Visual StudioのNuGetパッケージマネージャーコンソールを開いて、コマンドInstall-Package IronXL.Excelを実行します。また、NuGetパッケージマネージャーUIでIronXLを検索し、直接インストールすることもできます。
C#でIronXLを使用してExcelドキュメントを編集するにはどうすればよいですか?
IronXLを使用して、WorkBook.LoadでExcelドキュメントを読み込み、特定のワークシートにアクセスし、セルの値を変更し、WorkBookとWorkSheetオブジェクトによって提供されるメソッドを使用してブックを保存できます。
Excelファイル操作にIronXLを使用する利点は何ですか?
IronXLは、性能の向上、使いやすさ、プラットフォーム独立性などの利点を提供します。Excelのインストールは不要で、依存関係の問題を排除し、.NETアプリケーションへのシームレスな統合を可能にします。
Microsoft Interopを使用せずにWordドキュメントのタスクを自動化できますか?
はい、さまざまなサードパーティのライブラリは Word 文書タスクの自動化のための Microsoft Interop の代替を提供しており、シンプルな API を提供し、Microsoft Word のインストールを必要としません。



