IRONXLの使用

C# DataTableをExcelにエクスポートする最速の方法

リーガン・パン
リーガン・パン
2023年3月30日
更新済み 2024年9月26日
共有:

スプレッドシートを扱う際には、Microsoft Excelアプリケーションは、表形式で大規模なデータセットを管理するために設計された人気のあるスプレッドシートツールです。 複雑な計算、チャートやグラフによるデータ可視化、ピボットテーブル、Visual Basic for Applications (VBA) を介した自動化のサポートなど、強力な機能を提供します。 その堅牢なデータ分析と可視化ツールにより、Excel は様々な業界での第一選択肢となっています。 Excelを使用すると、ファイルの作成、編集、表示、共有を簡単に行うことができ、データ管理の作業を効率化できます。

C#では、ADO.NETライブラリのDataTableオブジェクトは、プログラム内で表形式のデータを表し、Excelのワークシートのように機能します。 データを行と列に整理し、簡単に操作およびエクスポートできるようにします。 Excelのように、DataTableはフィルタリング、ソート、およびフォーマットオプションをサポートしており、C#でデータ範囲を管理するための便利なツールです。 しかし、DataTableは実行時に作成され、ExcelファイルやCSVファイルなどのより永続的な形式にエクスポートされない限り、アプリケーションが閉じられるとデータが失われます。

本日は、C#でDataTableを作成し、そのデータを強力な.NET ExcelライブラリであるIronXLを使用してExcelドキュメントにエクスポートする方法を探っていきます。

IronXL: .NET用Excelライブラリ

IronXL は、Excelファイルの作成プロセスを簡素化するC# .NETライブラリです。 IronXLを使用すると、新しいスプレッドシートを作成したり、既存のスプレッドシートを編集したり、Excelの数式を使用したり、スプレッドシートのセルをスタイル設定したりすることができます。 その豊富な機能により、Excelファイルをプログラムで扱うことが非常に簡単になり、最も重要なのは、IronXLがMicrosoft Office Interopを使用せずに動作することです。これにより、Microsoft Officeや他の特別な依存関係をインストールする必要がありません。

IronXLを使用すると、XLSとXLSX、CSVデータとTSV、JSON、XMLとHTML、バイナリとバイト配列のようなさまざまな形式でデータを保存またはエクスポートできます。 また、権限やパスワードの追加などの強力なワークブックセキュリティ機能を備えており、ワークブックのメタデータを編集できるという特長があります。

データテーブルからExcelファイルへデータをエクスポートする手順

前提条件

IronXLを使用してC#でデータテーブルからExcelファイルにデータをエクスポートするには、ローカルコンピュータに以下のコンポーネントをインストールする必要があります。 それでは、一つずつ見ていきましょう。

  1. Visual Studio - Visual Studio はC#プログラミング用のIDEであり、インストールする必要があります。 最新バージョンはVisual Studioのウェブサイトからダウンロードしてインストールできます。

    • IDEをセットアップしたら、データテーブルをExcelにエクスポートするためのコンソールアプリケーション/Windowsフォームを作成する必要があります。 以下のスクリーンショットはプロジェクトの作成方法を示しています。

    プロジェクトを作成する

    次に、プロジェクトタイプを選択してください。 例として、コンソールアプリを作成します。

    コンソールアプリ

    プロジェクトに名前を付け、保存場所を選択します。

    プロジェクト名

    最後に、.NET Frameworkを選択して、「作成」をクリックしてください。

    .NET Framework

    最後のスクリーンショットで「Create」をクリックした後、「DemoApp」という名前のプロジェクトが作成されます。

  2. IronXLライブラリ - IronXLライブラリは、Visual Studioプロジェクトにダウンロードしてインストールする必要があります。 それを行う方法は複数あります。

    • Visual Studio を使用する - NuGet パッケージ マネージャーを提供しており、IronXL をインストールできます。 ツールメニューまたはソリューションエクスプローラーからアクセスできます。 次のスクリーンショットはIronXLのインストールを助けます。 まず、上部バーの「ツール」に移動するか、ソリューションエクスプローラー内を右クリックします。

    ソリューション エクスプローラー

    ツール - NuGet パッケージ マネージャー

    「ソリューションのNuGetパッケージを管理」に移動し、IronXLを検索します。 それから、「Install」を押すだけで、IronXLライブラリがプロジェクトに追加されます。

    IronXLを閲覧する

    • Developer Command Prompt - Visual Studio のツールメニュー、または Visual Studio フォルダーから Developer Command Prompt を開きます。 以下のコマンドを入力して、プロジェクトにIronXLをダウンロードおよびインストールしてください:
PM > Install-Package IronXL.Excel
PM > Install-Package IronXL.Excel
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'PM > Install-Package IronXL.Excel
$vbLabelText   $csharpLabel
  1. 必要な名前空間を追加 - DataTableを作成し、IronXLを使用するには、両方ともProgram.csファイルの冒頭で参照されるべきです。
using IronXL; //add reference...
   using System.Data;
using IronXL; //add reference...
   using System.Data;
Imports IronXL 'add reference...
   Imports System.Data
$vbLabelText   $csharpLabel

すべての前提条件が満たされたら、データテーブルからExcelシートにデータをエクスポートする時です。

C#でDataTableを作成する

次のコードは、2つの列ヘッダーと複数の行を持つ新しいデータテーブルを作成します:

//new datatable dt...
DataTable dt = new DataTable();
//add column names...
dt.Columns.Add("Animal");
dt.Columns.Add("Sound");
dt.Rows.Add("Lion", "Roars"); // first row...
dt.Rows.Add("Dog", "Barks");
dt.Rows.Add("Cat", "Meows");
dt.Rows.Add("Goat", "Bleats");
dt.Rows.Add("Wolf", "Howls");
dt.Rows.Add("Cheetah", "Purrs");
//new datatable dt...
DataTable dt = new DataTable();
//add column names...
dt.Columns.Add("Animal");
dt.Columns.Add("Sound");
dt.Rows.Add("Lion", "Roars"); // first row...
dt.Rows.Add("Dog", "Barks");
dt.Rows.Add("Cat", "Meows");
dt.Rows.Add("Goat", "Bleats");
dt.Rows.Add("Wolf", "Howls");
dt.Rows.Add("Cheetah", "Purrs");
'new datatable dt...
Dim dt As New DataTable()
'add column names...
dt.Columns.Add("Animal")
dt.Columns.Add("Sound")
dt.Rows.Add("Lion", "Roars") ' first row...
dt.Rows.Add("Dog", "Barks")
dt.Rows.Add("Cat", "Meows")
dt.Rows.Add("Goat", "Bleats")
dt.Rows.Add("Wolf", "Howls")
dt.Rows.Add("Cheetah", "Purrs")
$vbLabelText   $csharpLabel

最初に、「dt」という新しいDataTableを作成します。 次に、Columns.Addを使用して、データテーブルに指定した数の列を名前で追加することができます。例として、「Animal」と「Sound」という2つの列があります。 次に、Rows.Add を使用して新しい行を追加し、各行の内容をブラケット内に配置します。 コンテンツは、列ごとに各文字列をカンマで区切って分割されています。

IronXLを使用してC#でExcelファイルを作成する

IronXLを使用してゼロからExcelファイル形式を作成するプロセスは2ステップで行われ、C#での実装は非常に簡単です。 IronXL は最初に Excel ワークブックを作成し、その後ワークシートを追加するのを手助けします。 以下のサンプルコードは、ワークブックとワークシートを作成する方法を示しています。

//create new workbook...
WorkBook wb = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet ws = wb.DefaultWorkSheet;
//create new workbook...
WorkBook wb = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet ws = wb.DefaultWorkSheet;
'create new workbook...
Dim wb As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim ws As WorkSheet = wb.DefaultWorkSheet
$vbLabelText   $csharpLabel

IronXLを使用してDataTableからExcelワークシートにデータをエクスポートする

IronXLを利用してワークシートに値を追加すると、そのプロセス全体が効率化され、少ないコードでこのタスクを実行することができます。 ここでは、前のセクションで作成したデータテーブルから新しく作成されたExcelワークシートにデータをエクスポートする方法を学びます。 以下のコードをステップバイステップで見てみましょう。

Excelワークシートに列ヘッダーを追加

ws["A1"].Value = dt.Columns[0].ToString();
ws["B1"].Value = dt.Columns[1].ToString();
int rowCount = 2;
ws["A1"].Value = dt.Columns[0].ToString();
ws["B1"].Value = dt.Columns[1].ToString();
int rowCount = 2;
ws("A1").Value = dt.Columns(0).ToString()
ws("B1").Value = dt.Columns(1).ToString()
Dim rowCount As Integer = 2
$vbLabelText   $csharpLabel

上記のコードでは、Excelシートの列「A1」にデータテーブルの列1のインデックス0の値が割り当てられ、次のExcel列「B1」の値にはデータテーブルの列2のインデックス1の値が割り当てられます。 rowCount 変数は、データテーブルから2行目から行を読み取るために2に設定されています。これにより、ヘッダー行がカウントされないようにします。

Excelワークシートに行を追加する

次のコードは、データテーブルの各行を読み取り、Excelファイルの新しい行に割り当てます。

foreach (DataRow row in dt.Rows)
{
    ws["A" + (rowCount)].Value = row[0].ToString();
    ws["B" + (rowCount)].Value = row[1].ToString();
    rowCount++;
}
foreach (DataRow row in dt.Rows)
{
    ws["A" + (rowCount)].Value = row[0].ToString();
    ws["B" + (rowCount)].Value = row[1].ToString();
    rowCount++;
}
For Each row As DataRow In dt.Rows
	ws("A" & (rowCount)).Value = row(0).ToString()
	ws("B" & (rowCount)).Value = row(1).ToString()
	rowCount += 1
Next row
$vbLabelText   $csharpLabel

rowCount 変数は毎回インクリメントされるため、上記のコードにおいて データテーブルをExcel ワークシートのセルから新しい行として読み込みます。

Excelファイルを保存

最後に、SaveAs() メソッドを使用して Excel ファイルを保存します。

wb.SaveAs("DataTable_to_Excel_IronXL.xlsx");
wb.SaveAs("DataTable_to_Excel_IronXL.xlsx");
wb.SaveAs("DataTable_to_Excel_IronXL.xlsx")
$vbLabelText   $csharpLabel

ファイルは他の形式でも保存できます。例えば、CSV(カンマ区切り値)、JSON、XMLなどです。

wb.SaveAsCsv("DataTable_to_Excel_IronXL.csv");
wb.SaveAsJson("DataTable_to_Excel_IronXL.json");
wb.SaveAsXml("DataTable_to_Excel_IronXL.xml");
wb.SaveAsCsv("DataTable_to_Excel_IronXL.csv");
wb.SaveAsJson("DataTable_to_Excel_IronXL.json");
wb.SaveAsXml("DataTable_to_Excel_IronXL.xml");
wb.SaveAsCsv("DataTable_to_Excel_IronXL.csv")
wb.SaveAsJson("DataTable_to_Excel_IronXL.json")
wb.SaveAsXml("DataTable_to_Excel_IronXL.xml")
$vbLabelText   $csharpLabel

カスタムデリミタを使用して保存することもできます。

出力

ファイルの最終出力は次のようになります:

DataTableからExcelへの出力

サマリー

この記事では、C#で列と行を持つDataTableを作成し、その後、IronXLを使用してデフォルトのワークシートを含むExcelブックを生成する方法を示しました。 次に、DataTableから表形式のデータをExcelファイルに正常にエクスポートし、.xlsx形式で保存しました。

IronXLは、MS Excelがインストールされていなくても、開発者がExcelファイルをシームレスに扱えるユーザーフレンドリーなC#ライブラリです。 そのデータは、CSVファイルなどの様々な形式からエクスポートして、さらに操作や計算ができます。

IronXLとその強力な機能セットについて詳しく知るには、その詳細なドキュメントを必ずご覧ください。 自分で試してみたいですか? IronXL はまた、すべての機能に完全にアクセスできる無料試用版を提供しているため、この強力なライブラリがどのようにスプレッドシートプロジェクトを改善できるか、すぐに探索を始めることができます!

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