C#でのExcelファイル作成チュートリアル

ジョナス氏はミュンヘンの .NET ソフトウェアハウスのリード開発者です。ジョナス氏は IronXL を使用して、顧客の会計および販売パイプラインの Excel ドキュメント間のデータ交換を促進しています。IronXL はジョナス氏の顧客会計システムプロジェクトの多くで一般的なツールになりつつあります。
ヨナス・シュミット
2019年5月26日
更新済み 2024年12月10日
共有:
This article was translated from English: Does it need improvement?
Translated
View the article in English

このチュートリアルでは、.NET Framework 4.5 または .NET Core をサポートする任意のプラットフォームで Excel ワークブック ファイルを作成する方法をステップバイステップで案内します。 C#でExcelファイルを作成することは、レガシーなMicrosoft.Office.Interop.Excelライブラリに依存せずに簡単に行えます。 IronXLを使用して、ウィークシートのプロパティ(例えば、ウィンドウ枠の固定や保護)、印刷プロパティの設定などを行います。


概要

IronXL Creates C# Excel Files in .NET

IronXLは直感的なC# & VB Excel APIで、.NETでExcelスプレッドシートファイルを読み込み、編集、作成することができ、非常に高速なパフォーマンスを提供します。 MS OfficeやExcel Interopをインストールする必要はありません。

IronXLは、.NET Core、.NET Framework、Xamarin、モバイル、Linux、macOS、およびAzureを完全にサポートしています。

IronXLの機能:

:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-1.cs
using IronXL;

// Default file format is XLSX, we can override it using CreatingOptions
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
var workSheet = workBook.CreateWorkSheet("example_sheet");
workSheet["A1"].Value = "Example";

// Set value to multiple cells
workSheet["A2:A4"].Value = 5;
workSheet["A5"].Style.SetBackgroundColor("#f0f0f0");

// Set style to multiple cells
workSheet["A5:A6"].Style.Font.Bold = true;

// Set formula
workSheet["A6"].Value = "=SUM(A2:A4)";
if (workSheet["A6"].IntValue == workSheet["A2:A4"].IntValue)
{
    Console.WriteLine("Basic test passed");
}
workBook.SaveAs("example_workbook.xlsx");
Imports IronXL

' Default file format is XLSX, we can override it using CreatingOptions
Private workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Private workSheet = workBook.CreateWorkSheet("example_sheet")
Private workSheet("A1").Value = "Example"

' Set value to multiple cells
Private workSheet("A2:A4").Value = 5
workSheet("A5").Style.SetBackgroundColor("#f0f0f0")

' Set style to multiple cells
workSheet("A5:A6").Style.Font.Bold = True

' Set formula
workSheet("A6").Value = "=SUM(A2:A4)"
If workSheet("A6").IntValue = workSheet("A2:A4").IntValue Then
	Console.WriteLine("Basic test passed")
End If
workBook.SaveAs("example_workbook.xlsx")
$vbLabelText   $csharpLabel

ステップ 1

以下を日本語に翻訳してください:

  1. 無料のIronXL C#ライブラリをダウンロード

今日から無料トライアルでIronXLをあなたのプロジェクトで使い始めましょう。

最初のステップ:
green arrow pointer


NuGet を使用してインストール

IronXL NuGetパッケージをインストールするには、3つの異なる方法があります:

  1. Visual Studio (ビジュアルスタジオ)

  2. 開発者コマンドプロンプト

  3. NuGetパッケージを直接ダウンロード

    ビジュアルスタジオ

    Visual Studio は、あなたのプロジェクトに NuGet パッケージをインストールするために使用する NuGet パッケージ マネージャーを提供します。 プロジェクトメニューからアクセスするか、ソリューションエクスプローラーでプロジェクトを右クリックしてください。 以下の図3と図4に両方のオプションが示されています。

    図3プロジェクトメニュー
    Right Click Solution Explorer related to ビジュアルスタジオ

    図4ソリューションエクスプローラーを右クリック


    いずれかのオプションから「NuGet パッケージの管理」をクリックした後、「IronXL.Excel」パッケージを参照してインストールします(図5 に示すように)。

    Install Iron Excel Nuget Package related to ビジュアルスタジオ

    Figure 5Install IronXL.Excel NuGet Package

    開発者コマンドプロンプト

    開発者コマンドプロンプトを開き、以下の手順に従ってIronXL.Excel NuGetパッケージをインストールしてください:

  4. 開発者コマンドプロンプトを探します - 通常、Visual Studio フォルダの下にあります。

  5. 以下のコマンドを入力してください:

  6. PM > Install-Package IronXL.Excel

  7. Enterキーを押してください

  8. パッケージがインストールされます。

  9. Visual Studioプロジェクトをリロードしてください

    NuGetパッケージを直接ダウンロード

    NuGetパッケージをダウンロードするには、以下の手順に従ってください:

  10. 以下のURLに移動してください: https://www.nuget.org/packages/ironxl.excel/

  11. パッケージをダウンロードするをクリックしてください

  12. パッケージがダウンロードされた後、ダブルクリックしてください。

  13. Visual Studioプロジェクトをリロードしてください

    IronXLをライブラリの直接ダウンロードでインストールする

    IronXLをインストールする2番目の方法は、以下のURLから直接ダウンロードすることです: https://ironsoftware.com/csharp/excel/

    Download Ironxl Library related to IronXLをライブラリの直接ダウンロードでインストールする

    Figure 6Download IronXL library

    次の手順を使用して、プロジェクト内でライブラリを参照してください:

  14. ソリューションエクスプローラーでソリューションを右クリックします

  15. 参照を選択

  16. IronXL.dllライブラリを参照してください

  17. 「OK」をクリック

    さあ、行こう!

    セットアップが完了したので、IronXLライブラリの素晴らしい機能を操作し始めましょう!

    チュートリアルの方法

2. ASP.NET プロジェクトを作成

  • 以下のURLに移動します:
  • https://www.nuget.org/packages/ironxl.excel/
  • パッケージをダウンロードするをクリックしてください
  • パッケージがダウンロードされた後、ダブルクリックしてください。
  • Visual Studioプロジェクトをリロードしてください

ASP.NETウェブサイトを作成するには、次の手順を使用します。

  1. Visual Studio を開く

  2. ファイル > 新しいプロジェクトをクリック

  3. プロジェクトタイプのリストボックス에서 Visual C#の下にあるWebを選択します

  4. 「次に示すように、ASP.NET Webアプリケーションを選択してください。」

    New Project Asp Net related to 2. ASP.NET プロジェクトを作成

    図1新しいプロジェクト

  5. 「OK」をクリック

  6. 次の画面で、図2に示すように「Web Forms」を選択してください。

    Web Form related to 2. ASP.NET プロジェクトを作成

    図2Webフォーム

  7. 「OK」をクリック

    これで作業に取り掛かることができます。 IronXLをインストールして、ファイルのカスタマイズを開始しましょう。


3. Excel ワークブックを作成する

IronXLを使って新しいExcelブックを作成するのはとても簡単です! それは1行のコードです! はい、本当に:

:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-2.cs
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
Dim workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
$vbLabelText   $csharpLabel

IronXLを使用して、XLS(旧Excelファイルバージョン)とXLSX(現在および新しいファイルバージョン)の両方のファイル形式を作成することができます。

3.1. デフォルトのワークシートを設定 ###

さらに、デフォルトのWorksheetを作成するのはもっと簡単です:

:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-3.cs
WorkSheet workSheet = workBook.CreateWorkSheet("2020 Budget");
Dim workSheet As WorkSheet = workBook.CreateWorkSheet("2020 Budget")
$vbLabelText   $csharpLabel

上記のコードスニペットにおける「Sheet」はワークシートを表しており、セルの値を設定したり、Excelが行えるほぼすべての操作を行うことができます。

ワークブックとワークシートの違いについて混乱している場合は、説明させていただきます:

ワークブックにはワークシートが含まれています。 これは、一つのワークブックに好きなだけワークシートを追加できることを意味します。 後の記事でその方法を説明します。 ワークシートには行と列が含まれます。 行と列の交差点はセルと呼ばれ、これがExcelで作業する際に操作するものです。


4. セル値の設定 ##

4.1. セル値を手動で設定する ###

セルの値を手動で設定するには、操作しているセルを指定し、以下の例のようにその値を設定します:

:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-4.cs
workSheet["A1"].Value = "January";
workSheet["B1"].Value = "February";
workSheet["C1"].Value = "March";
workSheet["D1"].Value = "April";
workSheet["E1"].Value = "May";
workSheet["F1"].Value = "June";
workSheet["G1"].Value = "July";
workSheet["H1"].Value = "August";
workSheet["I1"].Value = "September";
workSheet["J1"].Value = "October";
workSheet["K1"].Value = "November";
workSheet["L1"].Value = "December";
workSheet("A1").Value = "January"
workSheet("B1").Value = "February"
workSheet("C1").Value = "March"
workSheet("D1").Value = "April"
workSheet("E1").Value = "May"
workSheet("F1").Value = "June"
workSheet("G1").Value = "July"
workSheet("H1").Value = "August"
workSheet("I1").Value = "September"
workSheet("J1").Value = "October"
workSheet("K1").Value = "November"
workSheet("L1").Value = "December"
$vbLabelText   $csharpLabel

ここで、列AからLにデータを入力し、各列の最初の行を異なる月の名前にしました。

4.2. セルの値を動的に設定する ###

値を動的に設定することは、前のコードセグメントとほとんど同じです。 これの良い点は、セルの位置をハードコーディングする必要がないことです。 次のコード例では、ランダムな数値を生成するために新しいRandomオブジェクトを作成し、その後、値を入力したいセルの範囲を反復処理するためのforループを使用します。

:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-5.cs
Random r = new Random();
for (int i = 2 ; i <= 11 ; i++)
{
    workSheet["A" + i].Value = r.Next(1, 1000);
    workSheet["B" + i].Value = r.Next(1000, 2000);
    workSheet["C" + i].Value = r.Next(2000, 3000);
    workSheet["D" + i].Value = r.Next(3000, 4000);
    workSheet["E" + i].Value = r.Next(4000, 5000);
    workSheet["F" + i].Value = r.Next(5000, 6000);
    workSheet["G" + i].Value = r.Next(6000, 7000);
    workSheet["H" + i].Value = r.Next(7000, 8000);
    workSheet["I" + i].Value = r.Next(8000, 9000);
    workSheet["J" + i].Value = r.Next(9000, 10000);
    workSheet["K" + i].Value = r.Next(10000, 11000);
    workSheet["L" + i].Value = r.Next(11000, 12000);
}
Dim r As New Random()
For i As Integer = 2 To 11
	workSheet("A" & i).Value = r.Next(1, 1000)
	workSheet("B" & i).Value = r.Next(1000, 2000)
	workSheet("C" & i).Value = r.Next(2000, 3000)
	workSheet("D" & i).Value = r.Next(3000, 4000)
	workSheet("E" & i).Value = r.Next(4000, 5000)
	workSheet("F" & i).Value = r.Next(5000, 6000)
	workSheet("G" & i).Value = r.Next(6000, 7000)
	workSheet("H" & i).Value = r.Next(7000, 8000)
	workSheet("I" & i).Value = r.Next(8000, 9000)
	workSheet("J" & i).Value = r.Next(9000, 10000)
	workSheet("K" & i).Value = r.Next(10000, 11000)
	workSheet("L" & i).Value = r.Next(11000, 12000)
Next i
$vbLabelText   $csharpLabel

A2からL11までのすべてのセルには、ランダムに生成されたユニークな値が含まれています。

動的な値について話すと、データベースからセルにデータを動的に追加する方法を学んでみませんか? 次のコードスニペットは、データベース接続が正しく設定されていることを前提に、これがどのように実行されるかを素早く示します。

4.3. データベースから直接追加 ###

:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-6.cs
// Create database objects to populate data from database
string contring;
string sql;
DataSet ds = new DataSet("DataSetName");
SqlConnection con;
SqlDataAdapter da;

// Set Database Connection string
contring = @"Data Source=Server_Name;Initial Catalog=Database_Name;User ID=User_ID;Password=Password";

// SQL Query to obtain data
sql = "SELECT Field_Names FROM Table_Name";

// Open Connection & Fill DataSet
con = new SqlConnection(contring);
da = new SqlDataAdapter(sql, con);
con.Open();
da.Fill(ds);

// Loop through contents of dataset
foreach (DataTable table in ds.Tables)
{
    int Count = table.Rows.Count - 1;
    for (int j = 12; j <= 21; j++)
    {
        workSheet["A" + j].Value = table.Rows[Count]["Field_Name_1"].ToString();
        workSheet["B" + j].Value = table.Rows[Count]["Field_Name_2"].ToString();
        workSheet["C" + j].Value = table.Rows[Count]["Field_Name_3"].ToString();
        workSheet["D" + j].Value = table.Rows[Count]["Field_Name_4"].ToString();
        workSheet["E" + j].Value = table.Rows[Count]["Field_Name_5"].ToString();
        workSheet["F" + j].Value = table.Rows[Count]["Field_Name_6"].ToString();
        workSheet["G" + j].Value = table.Rows[Count]["Field_Name_7"].ToString();
        workSheet["H" + j].Value = table.Rows[Count]["Field_Name_8"].ToString();
        workSheet["I" + j].Value = table.Rows[Count]["Field_Name_9"].ToString();
        workSheet["J" + j].Value = table.Rows[Count]["Field_Name_10"].ToString();
        workSheet["K" + j].Value = table.Rows[Count]["Field_Name_11"].ToString();
        workSheet["L" + j].Value = table.Rows[Count]["Field_Name_12"].ToString();
    }
    Count++;
}
' Create database objects to populate data from database
Dim contring As String
Dim sql As String
Dim ds As New DataSet("DataSetName")
Dim con As SqlConnection
Dim da As SqlDataAdapter

' Set Database Connection string
contring = "Data Source=Server_Name;Initial Catalog=Database_Name;User ID=User_ID;Password=Password"

' SQL Query to obtain data
sql = "SELECT Field_Names FROM Table_Name"

' Open Connection & Fill DataSet
con = New SqlConnection(contring)
da = New SqlDataAdapter(sql, con)
con.Open()
da.Fill(ds)

' Loop through contents of dataset
For Each table As DataTable In ds.Tables
	Dim Count As Integer = table.Rows.Count - 1
	For j As Integer = 12 To 21
		workSheet("A" & j).Value = table.Rows(Count)("Field_Name_1").ToString()
		workSheet("B" & j).Value = table.Rows(Count)("Field_Name_2").ToString()
		workSheet("C" & j).Value = table.Rows(Count)("Field_Name_3").ToString()
		workSheet("D" & j).Value = table.Rows(Count)("Field_Name_4").ToString()
		workSheet("E" & j).Value = table.Rows(Count)("Field_Name_5").ToString()
		workSheet("F" & j).Value = table.Rows(Count)("Field_Name_6").ToString()
		workSheet("G" & j).Value = table.Rows(Count)("Field_Name_7").ToString()
		workSheet("H" & j).Value = table.Rows(Count)("Field_Name_8").ToString()
		workSheet("I" & j).Value = table.Rows(Count)("Field_Name_9").ToString()
		workSheet("J" & j).Value = table.Rows(Count)("Field_Name_10").ToString()
		workSheet("K" & j).Value = table.Rows(Count)("Field_Name_11").ToString()
		workSheet("L" & j).Value = table.Rows(Count)("Field_Name_12").ToString()
	Next j
	Count += 1
Next table
$vbLabelText   $csharpLabel

対象のセルに入力するフィールド名をそのセルのValueプロパティに設定するだけです。


5. 書式を適用する ##

5.1. セルの背景色を設定する ###

セルやセル範囲の背景色を設定するには、次のようなコードを一行書くだけです。

:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-7.cs
workSheet["A1:L1"].Style.SetBackgroundColor("#d3d3d3");
workSheet("A1:L1").Style.SetBackgroundColor("#d3d3d3")
$vbLabelText   $csharpLabel

これは、セルの範囲の背景色を灰色に設定します。 色はRGB(赤、緑、青)形式で、最初の2文字が赤、次の2文字が緑、最後の2文字が青を表します。 値は0から9まで、その後AからFまでの範囲です(16進数)。

5.2. 境界線を作成する ###

IronXLを使用して境界線を作成するのはとても簡単です。以下に例を示します:

:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-8.cs
workSheet["A1:L1"].Style.TopBorder.SetColor("#000000");
workSheet["A1:L1"].Style.BottomBorder.SetColor("#000000");
workSheet["L2:L11"].Style.RightBorder.SetColor("#000000");
workSheet["L2:L11"].Style.RightBorder.Type = IronXL.Styles.BorderType.Medium;
workSheet["A11:L11"].Style.BottomBorder.SetColor("#000000");
workSheet["A11:L11"].Style.BottomBorder.Type = IronXL.Styles.BorderType.Medium;
workSheet("A1:L1").Style.TopBorder.SetColor("#000000")
workSheet("A1:L1").Style.BottomBorder.SetColor("#000000")
workSheet("L2:L11").Style.RightBorder.SetColor("#000000")
workSheet("L2:L11").Style.RightBorder.Type = IronXL.Styles.BorderType.Medium
workSheet("A11:L11").Style.BottomBorder.SetColor("#000000")
workSheet("A11:L11").Style.BottomBorder.Type = IronXL.Styles.BorderType.Medium
$vbLabelText   $csharpLabel

上記のコードでは、セルA1からL1に黒の上と下の境界線を設定し、次にL2からL11のセルに右の境界線を設定し、境界線のスタイルをMediumに設定しました。 最後に、セル A11 から L11 までの下のボーダーを設定しました。


6. セル内で数式を使用する ##

IronXLはすべてをとても簡単にすると何度も言っていますが、本当にその通りです。これを強調せずにはいられません! 以下のコードにより、数式を使用することができます:

:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-9.cs
// Use IronXL built-in aggregations
decimal sum = workSheet["A2:A11"].Sum();
decimal avg = workSheet["B2:B11"].Avg();
decimal max = workSheet["C2:C11"].Max();
decimal min = workSheet["D2:D11"].Min();

// Assign value to cells
workSheet["A12"].Value = sum;
workSheet["B12"].Value = avg;
workSheet["C12"].Value = max;
workSheet["D12"].Value = min;
' Use IronXL built-in aggregations
Dim sum As Decimal = workSheet("A2:A11").Sum()
Dim avg As Decimal = workSheet("B2:B11").Avg()
Dim max As Decimal = workSheet("C2:C11").Max()
Dim min As Decimal = workSheet("D2:D11").Min()

' Assign value to cells
workSheet("A12").Value = sum
workSheet("B12").Value = avg
workSheet("C12").Value = max
workSheet("D12").Value = min
$vbLabelText   $csharpLabel

この素晴らしい点は、セルのデータ型を設定できるため、数式の結果も設定できることです。 上記のコードは、SUM(値を合計)、AVG(値を平均)、MAX(最高値を取得)、MIN(最低値を取得)フォーミュラの使用方法を示しています。


7. ワークシートと印刷プロパティを設定する  

7.1. ワークシートのプロパティを設定 ###

ワークシートのプロパティには、行と列を固定することやパスワードでワークシートを保護することが含まれます。 次のように表示されます:

:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-10.cs
workSheet.ProtectSheet("Password");
workSheet.CreateFreezePane(0, 1);
workSheet.ProtectSheet("Password")
workSheet.CreateFreezePane(0, 1)
$vbLabelText   $csharpLabel

最初の行は固定されており、ワークシートの他の部分と一緒にスクロールされません。 ワークシートはパスワードで保護されており、編集ができません。 図7および図8にその実例が示されています。

Freeze Panes related to 7.1. ワークシートのプロパティを設定 ###

Figure 7Freeze Panes

Protected Worksheet related to 7.1. ワークシートのプロパティを設定 ###

Figure 8Protected Worksheet

7.2. ページと印刷プロパティの設定 ###

ページのプロパティを設定することができます。たとえば、ページの向き、ページのサイズ、および印刷エリアなどです。

:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-11.cs
workSheet.SetPrintArea("A1:L12");
workSheet.PrintSetup.PrintOrientation = IronXL.Printing.PrintOrientation.Landscape;
workSheet.PrintSetup.PaperSize = IronXL.Printing.PaperSize.A4;
workSheet.SetPrintArea("A1:L12")
workSheet.PrintSetup.PrintOrientation = IronXL.Printing.PrintOrientation.Landscape
workSheet.PrintSetup.PaperSize = IronXL.Printing.PaperSize.A4
$vbLabelText   $csharpLabel

印刷範囲はA1からL12に設定されます。向きが横向きに設定され、用紙サイズがA4に設定されます。

Print Setup related to 7.2. ページと印刷プロパティの設定 ###

Figure 9Print Setup


8. ワークブックを保存 ##

ブックを保存するには、次のコードを使用します:

:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-12.cs
workBook.SaveAs("Budget.xlsx");
workBook.SaveAs("Budget.xlsx")
$vbLabelText   $csharpLabel

チュートリアル クイック アクセス

Brand Visual Studio related to チュートリアル クイック アクセス

Download this Tutorial as C# Source Code

The full free C# for Excel Source Code for this tutorial is available to download as a zipped Visual Studio 2017 project file.

Download

このチュートリアルをGitHubで探索する

The source code for this project is available in C# and VB.NET on GitHub.

このコードを使用すると、わずか数分で簡単に始められます。このプロジェクトはMicrosoft Visual Studio 2017プロジェクトとして保存されていますが、どの.NET IDEとも互換性があります。

How to Create Excel File in C# on GitHub
Github Icon related to チュートリアル クイック アクセス
Documentation related to チュートリアル クイック アクセス

XL API リファレンスを読む

IronXLのすべての機能、名前空間、クラス、メソッドフィールド、列挙型の詳細を詳述したAPIリファレンスを探索してください。

APIリファレンスを表示
ジョナス氏はミュンヘンの .NET ソフトウェアハウスのリード開発者です。ジョナス氏は IronXL を使用して、顧客の会計および販売パイプラインの Excel ドキュメント間のデータ交換を促進しています。IronXL はジョナス氏の顧客会計システムプロジェクトの多くで一般的なツールになりつつあります。
C#開発者

ジョナスはミュンヘンの.NETソフトウェアハウスのリード開発者です。ジョナスはIronXLを使用して、顧客の会計および販売パイプラインのエクセルドキュメント間のデータ交換を行っています。IronXLはジョナスの顧客の会計システムプロジェクトで一般的なツールになりつつあります。