フッターコンテンツにスキップ
IRONWORDの使用方法

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がどのように役立つかを探ります。

C#を使用してWordドキュメントを操作する方法

  1. 新しいVisual Studioプロジェクトを作成します。
  2. Wordドキュメントを読み取るために必要なライブラリを設定します。
  3. Wordドキュメントを操作するには、既存のファイルを読み込むか新しいファイルを作成します。
  4. ドキュメントデータを編集し、ファイルを解析します。
  5. 作成されたすべてのオブジェクトを削除します。

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に似たアプリケーションを開発することもできます。 この場合、簡単のためにコンソールアプリケーションを使用します。

C#を使用してWordドキュメントを操作する方法: 図1 - 新しいVisual Studioプロジェクトの作成

プロジェクト詳細の構成

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

C#を使用してWordドキュメントを操作する方法: 図2 - 新しいVSプロジェクトの構成

.NET Frameworkを使用して新しいプロジェクトファイルを作成する

Frameworkドロップダウンメニューを使用して、.NET Frameworkを選択できます。 このプロジェクトでは、Dot.NET Framework 4.7を使用します。 次の操作は、「Create」ボタンを押すことです。

アプリケーションがソリューションを生成した後、Program.csファイルにアクセスしてコードを入力し、ビルドまたはプログラムを実行できます。

C#を使用してWordドキュメントを操作する方法: 図3 - 新しい.NETプロジェクト.csファイル

Microsoft.Office.Interop.Wordライブラリが追加されたので、コードをテストできます。

Interopライブラリをインストールする

次の修正には、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ファイルの編集を開始できます。

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で変更を保存し、ドキュメントとアプリケーションを正しく閉じます。

Interopに代わるIronXLライブラリ

IronXLは、.NETプログラムでExcelファイルを操作するためのMicrosoft Interopの代替手段です。 Microsoft InteropがExcelをInteropアセンブリを介して操作する必要がある一方で、IronXLは、.NETコンテキストでExcelファイルをプログラムによって操作するためのより簡単で、効果的で強力な方法を提供します。

Microsoft Interopの代わりにIronXLを使用することには、いくつかの利点があります。例えば:

  • パフォーマンスとリソース効率: IronXLは、コンピュータにExcelアプリケーションがインストールされることで依存しないため、Microsoft Interopよりも優れたパフォーマンスを発揮し、リソースの消費を抑えます。
  • 使いやすさとシンプルさ: IronXLは、Microsoft Interopに付随する複雑さなしに、Excelファイルの読み取り、書き込み、操作を簡単にするAPIを提供します。
  • 互換性と依存性: IronXLはMicrosoft Excelのインストールをコンピュータに必要としないため、ExcelやOfficeのさまざまなバージョンで発生する可能性のある依存性や互換性の問題を排除します。
  • プラットフォーム独立性: IronXLは、特定のMicrosoft Officeバージョンとより密接に関連する可能性のあるMicrosoft Interopとは異なり、さまざまな環境やプラットフォームでの展開の容易さの点でより柔軟性を提供します。

.NET開発者がExcelファイルをプログラムによって扱う必要がある場合、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ファイルの読み取りについては、ここ</a>をクリックして詳細を確認してください。

同じExcelアドレスを使用して、Excelシートの値を変更できます。 WorkBookオブジェクトによって提供されるSaveAs関数を使用することで、ExcelドキュメントをXLSXまたはXLSファイルとして保存できます。 このプロセスを使用して、ファイル全体が選択された形式で保存されます。

C#を使用して単語文書を操作する方法: 図8 - コンソール出力

また、インデックス値を使用したり、名前を指定して特定のExcelワークシートを選択できます。 次に、SaveAsオプションを使用して、Excelスプレッドシートからのデータを別のファイルにエクスポートできます。 Excelファイルの書式設定とエクスポートに関する詳細を知るには、こちらをクリックしてください。

結論

IronXLは、Excel用の最も人気のあるアドオンの1つです。 追加の外部ライブラリに依存しません。 セルフコンテインされているため、Microsoft Excelをインストールする必要はありません。 複数のチャネルを介して動作します。 これは、Wordドキュメントを編集するために追加のライブラリを使用してファイルを解析する必要があるInteropライブラリとは対照的です。

Microsoft Excelドキュメントを利用するあらゆるプログラミングプロセスに対する完全なソリューションがIronXLです。 計算、文字列または数字のソート、枝刈り、追加、検索と置換、結合と非結合、ファイル保存など、利用可能な操作が多数あります。 スプレッドシートデータの検証だけでなく、新しい形式のセルデータを構築することも可能です。 ファイルの読み書きおよびExcelデータの操作を支援します。

IronXLが初めて発売されたとき、$799の費用がかかりました。 または、顧客は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 のインストールを必要としません。

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