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

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は.NETでC# Excelファイルを作成します。

IronXLは直感的なC# & VB Excel APIです。.NETでExcelスプレッドシートファイルの読み取り、編集、作成を驚異的な速さで可能にします。 MS OfficeやExcel Interopをインストールする必要はありません。

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

IronXLの機能:

  • 私たちの.NET開発チームからの直接的な人的サポート
  • Microsoft Visual Studioを使用した迅速なインストール
  • 開発用は無料。 $749のライセンス。

    エクセルファイルの作成と保存:クイックコード

https://www.nuget.org/packages/IronXL.Excel/ 代替案として、 IronXL.dll をダウンロードできます そして、プロジェクトに追加されました。

: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")
VB   C#

ステップ 1

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

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

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

最初のステップ:
green arrow pointer


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

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

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

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

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

    ビジュアルスタジオ

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

    Project Menu related to ビジュアルスタジオ

    図3 申し訳ありませんが、翻訳するための具体的なコンテンツが提供されていないようです。翻訳したいテキストを提供してください。 プロジェクトメニュー

Right Click Solution Explorer related to NuGet を使用してインストール

図4 申し訳ありませんが、翻訳するための具体的なコンテンツが提供されていないようです。翻訳したいテキストを提供してください。 ソリューションエクスプローラーを右クリック


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

Install Iron Excel Nuget Package related to NuGet を使用してインストール

図 5 申し訳ありませんが、翻訳するための具体的なコンテンツが提供されていないようです。翻訳したいテキストを提供してください。 IronXL.Excel NuGetパッケージをインストールする

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

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

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

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

    1. PM > Install-Package IronXL.Excel

3.PM > Install-Package IronXL.Excel

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

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

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

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

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

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

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

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

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

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

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

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

    図6 申し訳ありませんが、翻訳するための具体的なコンテンツが提供されていないようです。翻訳したいテキストを提供してください。 IronXLライブラリをダウンロード

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

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

  9. 参照を選択

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

  11. 「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プロジェクトを作成する

図2ウェブフォーム

  1. 「OK」をクリック

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


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

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

: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)
VB   C#

どちらのXLS(古いExcelファイルバージョン)およびXLSX(現在のバージョンおよび最新バージョン)IronXLでファイル形式を作成できます。

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")
VB   C#

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

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

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


セル値の設定

セルの値を手動で設定する 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"
VB   C#

ここで、列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
VB   C#

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
VB   C#

対象のセルに入力するフィールド名をそのセルの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")
VB   C#

これは、セルの範囲の背景色を灰色に設定します。 色は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
VB   C#

上記のコードでは、セル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
VB   C#

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


ワークシートおよび印刷のプロパティを設定する

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)
VB   C#

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

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

図7 申し訳ありませんが、翻訳するための具体的なコンテンツが提供されていないようです。翻訳したいテキストを提供してください。 フリーズペイン

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

図8 申し訳ありませんが、翻訳するための具体的なコンテンツが提供されていないようです。翻訳したいテキストを提供してください。 保護されたワークシート

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
VB   C#

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

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

図9 申し訳ありませんが、翻訳するための具体的なコンテンツが提供されていないようです。翻訳したいテキストを提供してください。 印刷設定


ワークブックを保存する

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

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

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

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

このチュートリアルをC#ソースコードとしてダウンロード

このチュートリアルの完全無料のC# for Excelのソースコードは、ジップファイル形式のVisual Studio 2017プロジェクトファイルとしてダウンロードできます。

ダウンロード

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

このプロジェクトのソースコードはGitHubでC#およびVB.NETで入手可能です。

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

GitHubでC#を使用してExcelファイルを作成する方法
Github Icon related to チュートリアル クイック アクセス
Documentation related to チュートリアル クイック アクセス

XL API リファレンスを読む

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

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

ヨナス・シュミット

C#開発者

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