フッターコンテンツにスキップ
IRONXLの使用

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

この記事は、Microsoft Excelファイルを開き、C#コンソールアプリケーションでデータを書き込む方法を示すためにIronXLライブラリを探求します。

IronXL - Excel ライブラリ

IronXLは、C#アプリケーションでExcelファイルの作成、読み取り、編集を容易にする.NET Excelライブラリです。 それは卓越したパフォーマンスと正確な出力を提供します。 The library supports all Excel workbook file formats, including XLS, XLSX, XLSM, CSV, and TSV. Additionally, it allows data to be saved or exported in formats such as JSON, HTML, Binary, Byte Array, DataSet, or DataTable.

IronXLを使用すると、開発者はワークシートやセル範囲をシームレスに操作できます。 それは、シート内で数式を編集し、簡単に再計算する機能を提供します。 範囲、列、または行に基づいたデータの並べ替えは簡単です。 The library provides features to modify layouts, such as freezing panes, auto-sizing rows/columns, and adding/removing rows/columns.

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

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

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

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

新しいプロジェクト「DemoApp」を作成するには次の手順に従ってください。

  1. Visual Studioを開き、「Create a New Project」をクリックします

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

  1. Console Applicationを選択し、「Next」をクリックします

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

  1. プロジェクトの名前を入力します

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

  1. .NET バージョンを選択します。 安定版バージョン.NET 6.0を選択します。

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

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

プロジェクトが作成されたら、IronXLライブラリをプロジェクトにインストールして使用します。 それをインストールするために次のステップに従います。

  1. ソリューションのNuGet Packagesの管理を、Solution Explorerかツールから開きます。

Excelファイルを開いてC#でデータを書く方法、図5: NuGet Package Manager NuGet Package Manager

  1. IronXLライブラリを検索し、現在のプロジェクトを選択します。 インストールをクリックします。

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

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

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

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

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 = workBook.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 = workBook.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 = workBook.GetWorkSheet("Sheet1")

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

上記のコードはExcelブックの最初のシートを取得します。 データを含む新しいExcelファイルを作成するには、このコード例ページを確認してください。

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

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

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にデータを書き込みます。

// Write the same value to cells from B1 to B5
workSheet["B1:B5"].Value = "Range value";
// Write the same value to cells from B1 to B5
workSheet["B1:B5"].Value = "Range value";
' Write the same value to cells from B1 to B5
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 column C
    workSheet["C" + i].Value = "Value: " + i;

    // Write the Dynamic value in column D
    workSheet["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 column C
    workSheet["C" + i].Value = "Value: " + i;

    // Write the Dynamic value in column D
    workSheet["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 column C
	workSheet("C" & i).Value = "Value: " & i

	' Write the Dynamic value in column D
	workSheet("D" & i).Value = "Value: " & i
Next i
$vbLabelText   $csharpLabel

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

// Replace the value in cell D5
workSheet["D5"].Replace("Value: 5", "Replaced Value");
// Replace the value in cell D5
workSheet["D5"].Replace("Value: 5", "Replaced Value");
' Replace the value in cell D5
workSheet("D5").Replace("Value: 5", "Replaced Value")
$vbLabelText   $csharpLabel

Excelファイルを保存 C#

このセクションでは、新しく書き込まれた内容でExcelファイルを保存する方法を説明します。

// Save the updated Excel workbook to a file
workBook.SaveAs("sample.xlsx");
// Save the updated Excel workbook to a file
workBook.SaveAs("sample.xlsx");
' Save the updated Excel workbook to a file
workBook.SaveAs("sample.xlsx")
$vbLabelText   $csharpLabel

完全なコードは以下の通りです:

using System;
using IronXL;

class Program
{
    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";

        // Write the same value to cells from B1 to B5
        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 column C
            workSheet["C" + i].Value = "Value: " + i;

            // Write the Dynamic value in column D
            workSheet["D" + i].Value = "Value: " + i;
        }

        // Replace the value in cell D5
        workSheet["D5"].Replace("Value: 5", "Replaced Value");

        // Save the updated Excel workbook to a file
        workBook.SaveAs("sample.xlsx");
        Console.WriteLine("Successfully written to Excel File");
    }
}
using System;
using IronXL;

class Program
{
    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";

        // Write the same value to cells from B1 to B5
        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 column C
            workSheet["C" + i].Value = "Value: " + i;

            // Write the Dynamic value in column D
            workSheet["D" + i].Value = "Value: " + i;
        }

        // Replace the value in cell D5
        workSheet["D5"].Replace("Value: 5", "Replaced Value");

        // Save the updated Excel workbook to a file
        workBook.SaveAs("sample.xlsx");
        Console.WriteLine("Successfully written to Excel File");
    }
}
Imports System
Imports IronXL

Friend Class Program
	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"

		' Write the same value to cells from B1 to B5
		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 column C
			workSheet("C" & i).Value = "Value: " & i

			' Write the Dynamic value in column D
			workSheet("D" & i).Value = "Value: " & i
		Next i

		' Replace the value in cell D5
		workSheet("D5").Replace("Value: 5", "Replaced Value")

		' Save the updated Excel workbook to a file
		workBook.SaveAs("sample.xlsx")
		Console.WriteLine("Successfully written to Excel File")
	End Sub
End Class
$vbLabelText   $csharpLabel

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

出力

ファイルの出力は次の通りです:

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

まとめ

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

IronXL は開発用に無料で、商用利用のためにライセンスを取得できます。 商業利用のためのIronXLの無料トライアルも試すことができます。

よくある質問

C#でInteropを使用せずにExcelファイルを開く方法は?

IronXLライブラリを活用することで、C#でInteropを使用せずにExcelファイルを開くことができます。IronXLは、Microsoft Excelのインストールを必要とせず、パフォーマンスと互換性を向上させます。

C#を使用してExcelファイルの特定のセルにデータを書き込む方法は?

IronXLを使用すると、ワークブックにアクセスしてワークシートを選択し、セル参照を使ってExcelファイルの特定のセルにデータを割り当てることができます。

Excelファイル操作において、IronXLがOffice Interopよりも優れている点は何ですか?

IronXLは、Microsoft Excelのインストールに依存しない、パフォーマンスの向上、クロスプラットフォーム互換性、XLS、XLSX、CSVなどのさまざまなExcelファイル形式のサポートなど、Office Interopよりも多くの利点を提供します。

このライブラリを使用してExcelファイルの数式を編集できますか?

はい、IronXLを使用するとExcelファイルの数式を編集できます。既存の数式を操作したり、新しいものを挿入したりすることができ、ライブラリは簡潔な構文を効率的に処理します。

IronXLはさまざまなExcelファイル形式をどのようにサポートしていますか?

IronXLは、XLS、XLSX、XLSM、CSV、TSVなど、さまざまなExcelファイル形式をサポートしており、C#アプリケーションでこれらのファイルをスムーズに作成、読み取り、編集できます。

IronXLを使用してExcelファイルを保護することは可能ですか?

はい、IronXLは、ユーザーパスワードと権限を設定することでExcelファイルを保護する機能を提供し、データのセキュリティとアクセス制御を確保します。

C#プロジェクトにIronXLライブラリを統合する方法は?

C#プロジェクトにIronXLを統合するには、Visual StudioのNuGetパッケージマネージャーを使用します。IronXLを検索し、プロジェクトに追加してその機能を利用し始めます。

IronXLが対応しているプラットフォームは何ですか?

IronXLは、.NET 5、6、7、.NET Core、およびFrameworkを含む複数のプラットフォームをサポートしており、さまざまな開発環境に対して柔軟な選択肢となっています。

IronXLを無料で使用できますか?

IronXLは開発目的で無料です。ただし、商用利用にはライセンスが必要です。商用環境でライブラリの機能をテストするための無料試用版が利用可能です。

IronXLを使用してExcelデータをJSONにエクスポートする方法は?

IronXLを使用すると、ワークシートまたは特定のデータ範囲をJSON文字列に変換し、JSONデータを必要とするアプリケーションで使用することができます。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。