IRONXLの使用

C#でExcelファイルを開いてデータを書き込む方法

リーガン・パン
リーガン・パン
2023年6月20日
更新済み 2024年3月31日
共有:

この記事では、IronXLライブラリを使用して、C#コンソールアプリケーションでMicrosoft Excelファイルを開き、データを書き込む方法を説明します。

IronXL - エクセルライブラリ

IronXL は、C# アプリケーションで Excel ファイルの作成、読み取り、および編集を容易にする .NET Excel ライブラリです。 優れたパフォーマンスと正確な出力を提供します。 ライブラリは、XLS、XLSX、XLSM、CSV、およびTSVを含むすべてのExcelワークブックファイル形式をサポートしています。さらに、データをJSON、HTML、バイナリ、バイト配列、DataSet、またはDataTableの形式で保存またはエクスポートすることができます。

IronXLを使用すると、開発者はワークシートやセル範囲をシームレスに操作できます。 それは、シート内で数式を編集し、簡単に再計算する機能を提供します。 データの並べ替えは、範囲、列、行に基づいて簡単に行えます。 ライブラリは、ペインの固定行/列の自動サイズ調整行/列の追加/削除などのレイアウトを変更する機能を提供します。

IronXLは、ユーザーのパスワードと編集権限でExcelファイルを保護することも可能にします。 もう一つの注目すべき機能は、Excelワークシートから画像を追加、削除、抽出できることです。 このライブラリは、さまざまなセルデータ形式をサポートする多様なExcel機能を提供します。 これらの機能により、IronXLはExcelファイルを扱うための最もユーザーフレンドリーなAPIの一つとなっています。

IronXLの大きな利点の一つは、マシンにMicrosoft Excelをインストールする必要がないことです。これにより、Office Interopや他の依存関係が不要になります。 複数のプラットフォームと互換性があり、.NET 7、6、5をサポートしています。.NET Core 2および3、さらにExcelスプレッドシートで作業するための.NET Framework 4.5以降のバージョンとも互換性があります。

コンソールアプリケーションを作成する

アプリケーションを作成するには、最新バージョンのVisual Studio IDEを推奨します。 Visual StudioはC#開発のための公式IDEであり、既にインストールされていることが前提となっています。 Visual Studioをインストールしていない場合は、公式のMicrosoft Visual Studioのウェブサイトからダウンロードできます。

以下の手順に従って、新しいプロジェクト「DemoApp」を作成してください。

  1. Visual Studioを開き、「新しいプロジェクトの作成」をクリックしてください。

    C#でExcelファイルを開いてデータを書き込む方法、図1: 新しいプロジェクト

    新しいプロジェクト

  2. コンソールアプリケーションを選択し、次へをクリックしてください

    Excelファイルを開いてC#でデータを書く方法、図2:新しいプロジェクトタイプ

    新しいプロジェクトタイプ

  3. プロジェクト名を入力してください

    Excelファイルを開いてデータを書き込む方法(C#、図3: 新しいプロジェクト名)

    新しいプロジェクト名

  4. .NETバージョンを選択してください。 安定版の.NET 6.0を選択してください。

    C#でExcelファイルを開いてデータを書く方法、図4: 新しいプロジェクトの追加情報

    新規プロジェクト追加情報

IronXLライブラリをインストール

プロジェクトが作成されたら、使用するためにIronXLライブラリをプロジェクトにインストールする必要があります。 インストールするには、次の手順に従ってください。

  1. ソリューション エクスプローラーまたはツールから「ソリューション用 NuGet パッケージの管理」を開きます。

    Excelファイルを開いてデータをC#で書き込む方法、図5: NuGetパッケージマネージャー

    NuGet パッケージ マネージャー

  2. IronXLライブラリを参照し、現在のプロジェクトを選択します。 インストールをクリックしてください。

    Excelファイルを開いてデータをC#で書き込む方法、図6: NuGetパッケージマネージャーUIでIronXLパッケージを検索してインストールする

    NuGet パッケージ マネージャの UI で IronXL パッケージを検索してインストールする

    Program.csファイルの先頭に次の名前空間を追加します。

using IronXL;
using IronXL;
Imports IronXL
$vbLabelText   $csharpLabel

C#で既存のExcelファイルを開く

IronXLは、既存のExcelファイルを開く機能や、新しいExcelファイルを作成する機能を提供します。この例では、C# IronXLを使用して既存のファイルを開く方法を示します。

// Supported spreadsheet formats for reading XLSX, XLS, XLSM, XLTX, CSV and TSV
WorkBook workBook = WorkBook.Load("sample.xlsx");
// Supported spreadsheet formats for reading XLSX, XLS, XLSM, XLTX, CSV and TSV
WorkBook workBook = WorkBook.Load("sample.xlsx");
' Supported spreadsheet formats for reading XLSX, XLS, XLSM, XLTX, CSV and TSV
Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")
$vbLabelText   $csharpLabel

では、最初のワークシートを選択しましょう。 インデックス番号または名前でワークシートを選択できます。 DefaultWorkSheet プロパティは、最初のシートを取得するのに役立ちます。

// Select worksheet at index 0
WorkSheet workSheet = workBook.WorkSheets [0];

// Select worksheet by name 
WorkSheet ws = wb.GetWorkSheet("Sheet1"); 

// Get any existing worksheet
WorkSheet firstSheet = workBook.DefaultWorkSheet;
// Select worksheet at index 0
WorkSheet workSheet = workBook.WorkSheets [0];

// Select worksheet by name 
WorkSheet ws = wb.GetWorkSheet("Sheet1"); 

// Get any existing worksheet
WorkSheet firstSheet = workBook.DefaultWorkSheet;
' Select worksheet at index 0
Dim workSheet As WorkSheet = workBook.WorkSheets (0)

' Select worksheet by name 
Dim ws As WorkSheet = wb.GetWorkSheet("Sheet1")

' Get any existing worksheet
Dim firstSheet As WorkSheet = workBook.DefaultWorkSheet
$vbLabelText   $csharpLabel

上記のコードはExcelワークブックから最初のシートを取得します。 新しいExcelファイルをデータで作成するには、こちらのコード例のページをご覧ください。

では、IronXLオブジェクトライブラリを使用してExcelファイルにデータを書き込みましょう。

C#でExcelファイルにデータを書き込む

IronXLを使用してExcelファイルにデータを書き込むのは非常に簡単です。 それをアーカイブする方法は複数ありますが、最も簡単な方法はExcelセル参照を使用することです。

// Access A1 cell and write the value
workSheet ["A1"].Value = "Value using cell reference";
// Access A1 cell and write the value
workSheet ["A1"].Value = "Value using cell reference";
' Access A1 cell and write the value
workSheet ("A1").Value = "Value using cell reference"
$vbLabelText   $csharpLabel

データを一連のセルに書き込むことも可能です。 以下のコードは、セルB1からB5までのデータを書き込む。

workSheet ["B1:B5"].Value = "Range value";
workSheet ["B1:B5"].Value = "Range value";
workSheet ("B1:B5").Value = "Range value"
$vbLabelText   $csharpLabel

範囲を動的にするためにforループを使用して埋めることもできます。 コードは次のようになります:

//specify range in which we want to write the values
for (int i = 1; i <= 5; i++)
{
    //write the Dynamic value in one row
    workSheet ["C" + i].Value = "Value: " + i;

    //write the Dynamic value in another row
    ws ["D" + i].Value = "Value: " + i;
}
//specify range in which we want to write the values
for (int i = 1; i <= 5; i++)
{
    //write the Dynamic value in one row
    workSheet ["C" + i].Value = "Value: " + i;

    //write the Dynamic value in another row
    ws ["D" + i].Value = "Value: " + i;
}
'specify range in which we want to write the values
For i As Integer = 1 To 5
	'write the Dynamic value in one row
	workSheet ("C" & i).Value = "Value: " & i

	'write the Dynamic value in another row
	ws ("D" & i).Value = "Value: " & i
Next i
$vbLabelText   $csharpLabel

データをExcelファイルに書き込む別の方法は、Replaceメソッドを使用することです。

workSheet ["D5"].Replace("Value: 5", "Replaced Value");
workSheet ["D5"].Replace("Value: 5", "Replaced Value");
workSheet ("D5").Replace("Value: 5", "Replaced Value")
$vbLabelText   $csharpLabel

C#でExcelファイルを保存する

このセクションでは、新しく書き込まれたコンテンツを含むExcelファイルを保存する方法について説明します。

workBook.SaveAs("sample.xlsx");
workBook.SaveAs("sample.xlsx");
workBook.SaveAs("sample.xlsx")
$vbLabelText   $csharpLabel

コードは次のようになります:

using System;
using IronXL;

static void Main(string [] args)
{
    // Supported spreadsheet formats for reading XLSX, XLS, XLSM, XLTX, CSV and TSV
    WorkBook workBook = WorkBook.Load("sample.xlsx");

    // Select worksheet at index 0
    WorkSheet workSheet = workBook.WorkSheets [0];

    // Access A1 cell and write the value
    workSheet ["A1"].Value = "Value using cell reference";

    workSheet ["B1:B5"].Value = "Range value";

    //specify range in which we want to write the values
    for (int i = 1; i <= 5; i++)
    {
        //write the Dynamic value in one row
        workSheet ["C" + i].Value = "Value: " + i;

        //write the Dynamic value in another row
        workSheet ["D" + i].Value = "Value: " + i;
    }

    workSheet ["D5"].Replace("Value: 5", "Replaced Value");

    workBook.SaveAs("sample.xlsx");
    Console.WriteLine("successfully written in Excel File");
}
using System;
using IronXL;

static void Main(string [] args)
{
    // Supported spreadsheet formats for reading XLSX, XLS, XLSM, XLTX, CSV and TSV
    WorkBook workBook = WorkBook.Load("sample.xlsx");

    // Select worksheet at index 0
    WorkSheet workSheet = workBook.WorkSheets [0];

    // Access A1 cell and write the value
    workSheet ["A1"].Value = "Value using cell reference";

    workSheet ["B1:B5"].Value = "Range value";

    //specify range in which we want to write the values
    for (int i = 1; i <= 5; i++)
    {
        //write the Dynamic value in one row
        workSheet ["C" + i].Value = "Value: " + i;

        //write the Dynamic value in another row
        workSheet ["D" + i].Value = "Value: " + i;
    }

    workSheet ["D5"].Replace("Value: 5", "Replaced Value");

    workBook.SaveAs("sample.xlsx");
    Console.WriteLine("successfully written in Excel File");
}
Imports System
Imports IronXL

Shared Sub Main(ByVal args() As String)
	' Supported spreadsheet formats for reading XLSX, XLS, XLSM, XLTX, CSV and TSV
	Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")

	' Select worksheet at index 0
	Dim workSheet As WorkSheet = workBook.WorkSheets (0)

	' Access A1 cell and write the value
	workSheet ("A1").Value = "Value using cell reference"

	workSheet ("B1:B5").Value = "Range value"

	'specify range in which we want to write the values
	For i As Integer = 1 To 5
		'write the Dynamic value in one row
		workSheet ("C" & i).Value = "Value: " & i

		'write the Dynamic value in another row
		workSheet ("D" & i).Value = "Value: " & i
	Next i

	workSheet ("D5").Replace("Value: 5", "Replaced Value")

	workBook.SaveAs("sample.xlsx")
	Console.WriteLine("successfully written in Excel File")
End Sub
$vbLabelText   $csharpLabel

C#でExcelファイルデータを読み取る方法の詳細については、この例をご覧ください。

出力

ファイルの出力は:

Excelファイルを開いてC#でデータを書く方法、図7: 出力されたExcelファイル

出力Excelファイル

サマリー

この記事では、IronXLを使用してC#でExcelファイルにデータを書き込む方法を説明しました。 IronXLは、既存のExcelファイルを手間なく操作する機能を提供します。 また、簡単な構文で新しいExcelファイルを作成し、データを書き込むこともできます。 IronXLは、Microsoft ExcelアプリケーションがインストールされていなくてもExcelファイルを読み取るために使用できます。 Excelファイルからデータを読み取るには、このコード例のページをご覧ください。

IronXL は開発には無料で使用でき、商用利用にはライセンスが必要です。 商業利用向けにIronXLの無料試用版もお試しいただけます。

リーガン・パン
ソフトウェアエンジニア
レーガンはリーディング大学で電子工学の学士号を取得しました。Iron Softwareに入社する前の仕事では、一つのタスクに集中して取り組んでいました。Iron Softwareでは、営業、技術サポート、製品開発、マーケティングのいずれにおいても広範な業務に携わることが最も楽しいと感じています。彼は、Iron Softwareライブラリを開発者がどのように使用しているかを理解し、その知識を使ってドキュメントを継続的に改善し、製品を開発することを楽しんでいます。
< 以前
C#を使用してExcelの保護ビューを無効にする方法
次へ >
大量のデータをDataTableからExcelにエクスポートする方法 (C#)