C#でのExcelファイル作成チュートリアル
このチュートリアルでは、.NET Framework 4.5 または .NET Core をサポートする任意のプラットフォームで Excel ワークブック ファイルを作成する方法をステップバイステップで案内します。 C#でExcelファイルを作成することは、従来のMicrosoft.Office.Interop.Excelライブラリに依存することなく、簡単に行うことができます。 IronXLを使用して、ウィークシートのプロパティ(例えば、ウィンドウ枠の固定や保護)、印刷プロパティの設定などを行います。
概要
C#でExcelファイルを作成する方法
- ExcelファイルとCSVファイルを作成するためのC#ライブラリをダウンロード
- ASP.NETプロジェクトWebアプリケーションを作成する
- C#ライブラリを使用してExcelワークブックを作成する
- Excelワークシートでセルの値を手動で設定
- 書式を適用し、セルの背景色を設定する
- セルに数式を使用
- ワークシートと印刷のプロパティを設定する
- Excelワークブックを保存
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")
ステップ 1
以下を日本語に翻訳してください:
- 無料のIronXL C#ライブラリをダウンロード
今日から無料トライアルでIronXLをあなたのプロジェクトで使い始めましょう。
NuGet を使用してインストール
IronXL NuGetパッケージをインストールするには、3つの異なる方法があります:
-
Visual Studio (ビジュアル・スタジオ)(ビジュアルスタジオ)
-
開発者コマンドプロンプト
- NuGetパッケージを直接ダウンロード
ビジュアルスタジオ
Visual Studio は、あなたのプロジェクトに NuGet パッケージをインストールするために使用する NuGet パッケージ マネージャーを提供します。 プロジェクトメニューからアクセスするか、ソリューションエクスプローラーでプロジェクトを右クリックしてください。 以下の図3と図4に両方のオプションが示されています。
いずれかのオプションから「NuGet パッケージの管理」をクリックした後、「IronXL.Excel」パッケージを参照してインストールします(図5 に示すように)。
開発者コマンドプロンプト
開発者コマンドプロンプトを開き、以下の手順に従ってIronXL.Excel NuGetパッケージをインストールしてください:
-
開発者コマンドプロンプトを探します - 通常、Visual Studio フォルダの下にあります。
-
以下のコマンドを入力してください:
- PM > Install-Package IronXL.Excel
3.PM > Install-Package IronXL.Excel
-
Enterキーを押してください
-
パッケージがインストールされます。
-
Visual Studioプロジェクトをリロードしてください
NuGetパッケージを直接ダウンロード
NuGetパッケージをダウンロードするには、以下の手順に従ってください:
-
以下のURLに移動してください: https://www.nuget.org/packages/ironxl.excel/
-
パッケージをダウンロードするをクリックしてください
-
パッケージがダウンロードされた後、ダブルクリックしてください。
-
Visual Studioプロジェクトをリロードしてください
IronXLをライブラリの直接ダウンロードでインストールする
IronXLをインストールする2番目の方法は、以下のURLから直接ダウンロードすることです: https://ironsoftware.com/csharp/excel/
次の手順を使用して、プロジェクト内でライブラリを参照してください:
-
ソリューションエクスプローラーでソリューションを右クリックします
-
参照を選択
-
IronXL.dllライブラリを参照してください
- 「OK」をクリック
さあ、行こう!
セットアップが完了したので、IronXLライブラリの素晴らしい機能を使い始めましょう。!
チュートリアルの方法
2. ASP.NETプロジェクトを作成する
- 以下のURLに移動します:
- https://www.nuget.org/packages/ironxl.excel/
- パッケージをダウンロードするをクリックしてください
- パッケージがダウンロードされた後、ダブルクリックしてください。
- Visual Studioプロジェクトをリロードしてください
ASP.NETウェブサイトを作成するには、次の手順を使用します。
-
Visual Studio を開く
-
ファイル > 新しいプロジェクトをクリック
-
プロジェクトタイプのリストボックス에서 Visual C#の下にあるWebを選択します
-
「次に示すように、ASP.NET Webアプリケーションを選択してください。」
図1 - 新しいプロジェクト
-
「OK」をクリック
- 次の画面で、図2に示すように「Web Forms」を選択してください。
図2 – ウェブフォーム
-
「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)
どちらの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")
上記のコードスニペットにおける「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"
ここで、列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
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
対象のセルに入力するフィールド名をそのセルの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")
これは、セルの範囲の背景色を灰色に設定します。 色は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
上記のコードでは、セル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
この素晴らしい点は、セルのデータ型を設定できるため、数式の結果も設定できることです。 上記のコードは、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)
最初の行は固定されており、ワークシートの他の部分と一緒にスクロールされません。 ワークシートはパスワードで保護されており、編集ができません。 図7および図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
印刷範囲はA1からL12に設定されます。向きが横向きに設定され、用紙サイズがA4に設定されます。
ワークブックを保存する
ブックを保存するには、次のコードを使用します:
:path=/static-assets/excel/content-code-examples/tutorials/create-excel-file-net-12.cs
workBook.SaveAs("Budget.xlsx");
workBook.SaveAs("Budget.xlsx")
チュートリアル クイック アクセス
このチュートリアルをC#ソースコードとしてダウンロード
このチュートリアルの完全無料のC# for Excelのソースコードは、ジップファイル形式のVisual Studio 2017プロジェクトファイルとしてダウンロードできます。
ダウンロードこのチュートリアルをGitHubで探索する
このプロジェクトのソースコードはGitHubでC#およびVB.NETで入手可能です。
このコードを使用すると、わずか数分で簡単に始められます。このプロジェクトはMicrosoft Visual Studio 2017プロジェクトとして保存されていますが、どの.NET IDEとも互換性があります。
GitHubでC#を使用してExcelファイルを作成する方法