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

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

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

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

今日、C#でDataTableを作成し、IronXLを使用してそのデータをExcelドキュメントにエクスポートする方法を探ります。

IronXL: A .NET Excelライブラリ

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

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

DataTableからExcelファイルへのデータエクスポートの手順

前提条件

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

  1. Visual Studio - C#プログラミングのためのIDEであるVisual Studioをインストールする必要があります。 Visual Studioのウェブサイトから最新バージョンをダウンロードしてインストールできます。
  • IDEが設定されたら、DataTableをExcelにエクスポートするのに役立つコンソールアプリケーションまたはWindowsフォームを作成する必要があります。 以下のスクリーンショットは、プロジェクトを作成する方法を示しています。

プロジェクトを作成する

次に、プロジェクトの種類を選択します。 例では、コンソールアプリを作成します。

コンソールアプリ

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

プロジェクト名

最後に、.NETフレームワークを選択し、「作成」をクリックします。

.NETフレームワーク

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

  1. IronXLライブラリ - Visual StudioプロジェクトにIronXLライブラリをダウンロードしてインストールする必要があります。 これを行う方法はいくつかあります。
  • Visual Studioを使用する - NuGetパッケージマネージャーを使用してIronXLをインストールできます。 ツールメニューまたはソリューションエクスプローラからアクセスできます。 以下のスクリーンショットは、IronXLをインストールする手順を示しています。 まず、上部バーの「ツール」にアクセスするか、ソリューションエクスプローラ内で右クリックします。

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

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

「Manage NuGet Packages for Solution」に移動し、IronXLを検索します。 「インストール」を押すだけで、プロジェクトにIronXLライブラリが追加されます。

IronXLを参照

  • Developer Command Prompt - Visual StudioツールメニューまたはVisual StudioフォルダからDeveloper Command Promptを開きます。 プロジェクトにIronXLをダウンロードおよびインストールするには、次のコマンドを入力します:

     PM > Install-Package IronXL.Excel
     PM > Install-Package IronXL.Excel
    SHELL
  1. 必要な名前空間を追加する - DataTableを作成し、IronXLを使用するには、両方ともProgram.csファイルの上部に参照する必要があります。

    using IronXL; // Add reference to the IronXL library
    using System.Data; // Add reference to System.Data for DataTable
    using IronXL; // Add reference to the IronXL library
    using System.Data; // Add reference to System.Data for DataTable
    Imports IronXL ' Add reference to the IronXL library
    Imports System.Data ' Add reference to System.Data for DataTable
    $vbLabelText   $csharpLabel

すべての前提条件が満たされたら、DataTableからExcelシートへのデータのエクスポートを開始します。

C#でDataTableを作成する

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

// Create a new DataTable object
DataTable dt = new DataTable();
// Add column names to the DataTable
dt.Columns.Add("Animal");
dt.Columns.Add("Sound");
// Add rows representing different animals and their sounds
dt.Rows.Add("Lion", "Roars");
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");
// Create a new DataTable object
DataTable dt = new DataTable();
// Add column names to the DataTable
dt.Columns.Add("Animal");
dt.Columns.Add("Sound");
// Add rows representing different animals and their sounds
dt.Rows.Add("Lion", "Roars");
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");
' Create a new DataTable object
Dim dt As New DataTable()
' Add column names to the DataTable
dt.Columns.Add("Animal")
dt.Columns.Add("Sound")
' Add rows representing different animals and their sounds
dt.Rows.Add("Lion", "Roars")
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を使用してExcelファイルを作成する

IronXLを使用してスクラッチからExcelファイルタイプを作成する際、2ステップのプロセスであり、C#で非常に簡単に実装できます。 IronXLは最初にExcelワークブックを作成し、次にそれにワークシートを追加します。 以下のサンプルコードは、ワークブックとそのワークシートを作成する方法を示します:

// Create a new workbook in XLSX format
WorkBook wb = WorkBook.Create(ExcelFileFormat.XLSX);
// Reference to the default worksheet in the workbook
WorkSheet ws = wb.DefaultWorkSheet;
// Create a new workbook in XLSX format
WorkBook wb = WorkBook.Create(ExcelFileFormat.XLSX);
// Reference to the default worksheet in the workbook
WorkSheet ws = wb.DefaultWorkSheet;
' Create a new workbook in XLSX format
Dim wb As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
' Reference to the default worksheet in the workbook
Dim ws As WorkSheet = wb.DefaultWorkSheet
$vbLabelText   $csharpLabel

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

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

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

// Assign DataTable column names to the first row of the Excel worksheet
ws["A1"].Value = dt.Columns[0].ToString();
ws["B1"].Value = dt.Columns[1].ToString();
// Start adding data from the second row
int rowCount = 2;
// Assign DataTable column names to the first row of the Excel worksheet
ws["A1"].Value = dt.Columns[0].ToString();
ws["B1"].Value = dt.Columns[1].ToString();
// Start adding data from the second row
int rowCount = 2;
' Assign DataTable column names to the first row of the Excel worksheet
ws("A1").Value = dt.Columns(0).ToString()
ws("B1").Value = dt.Columns(1).ToString()
' Start adding data from the second row
Dim rowCount As Integer = 2
$vbLabelText   $csharpLabel

上記のコードでは、Excelシートの列"A1"にDataTableの列1のインデックス0の値が割り当てられ、次のExcel列"B1"の値はDataTableの列2のインデックス1から割り当てられます。 rowCount変数は2に設定されており、2行目からDataTableの行を読み取るようになっています; これは見出し行を数えないようにするためです。

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

以下のコードは、DataTableの各行を読み取り、Excelファイルの新しい行に割り当てます:

// Iterate through each row in the DataTable and add to Excel worksheet
foreach (DataRow row in dt.Rows)
{
    ws["A" + (rowCount)].Value = row[0].ToString();
    ws["B" + (rowCount)].Value = row[1].ToString();
    rowCount++;
}
// Iterate through each row in the DataTable and add to Excel worksheet
foreach (DataRow row in dt.Rows)
{
    ws["A" + (rowCount)].Value = row[0].ToString();
    ws["B" + (rowCount)].Value = row[1].ToString();
    rowCount++;
}
' Iterate through each row in the DataTable and add to Excel worksheet
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変数は毎回インクリメントされ、DataTableからExcelワークシートのセルに新しい行が読み取られるようになります。

Excelファイルを保存する

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

// Save the workbook to a file
wb.SaveAs("DataTable_to_Excel_IronXL.xlsx");
// Save the workbook to a file
wb.SaveAs("DataTable_to_Excel_IronXL.xlsx");
' Save the workbook to a file
wb.SaveAs("DataTable_to_Excel_IronXL.xlsx")
$vbLabelText   $csharpLabel

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

// Save the workbook in different file formats
wb.SaveAsCsv("DataTable_to_Excel_IronXL.csv");
wb.SaveAsJson("DataTable_to_Excel_IronXL.json");
wb.SaveAsXml("DataTable_to_Excel_IronXL.xml");
// Save the workbook in different file formats
wb.SaveAsCsv("DataTable_to_Excel_IronXL.csv");
wb.SaveAsJson("DataTable_to_Excel_IronXL.json");
wb.SaveAsXml("DataTable_to_Excel_IronXL.xml");
' Save the workbook in different file formats
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は、すべての機能にフルアクセスできる無料トライアルも提供しており、この強力なライブラリがスプレッドシートプロジェクトの改善にどのように貢献できるかをすぐに探り始めることができます!

よくある質問

C#を使ってDataTableをExcelに迅速にエクスポートする方法は?

IronXL .NET Excelライブラリを使用して、効率的にDataTableをExcelにエクスポートできます。このライブラリを使用すればMicrosoft Office Interopを必要とせず、Excelファイルを作成および操作できます。

C#でDataTableをExcelにエクスポートするために必要なツールは何ですか?

IronXLを使用してDataTableをExcelにエクスポートするには、Visual Studioがインストールされている必要があり、プロジェクトにIronXLライブラリをNuGetパッケージマネージャーを通して追加する必要があります。

C#アプリケーションでDataTableを作成する方法は?

C#では、新しいDataTableオブジェクトをインスタンス化することでDataTableを作成します。その後、Columns.Addを使用して列を追加し、Rows.Addを使用して行で埋めることができます。

DataTableのデータをExcelファイルにエクスポートする方法は何ですか?

DataTableからExcelファイルへのデータをエクスポートするには、各DataTable行を繰り返し処理し、それに対応するExcelセルにIronXLの機能を使って値を割り当てます。

異なる形式でExcelファイルを保存することは.NETライブラリで可能ですか?

はい、IronXLを使用すれば、XLSX、CSV、JSON、XMLなどの様々な形式でExcelファイルを保存できます。カスタム区切り文字を指定することも可能です。

C#ライブラリでExcelファイルを管理するためにMicrosoft Officeは必要ですか?

いいえ、Microsoft Officeをインストールする必要はありません。IronXLを使用すれば、Microsoft Office Interopに頼らずプログラム的にExcelファイルを管理できます。

なぜ.NET Excelライブラリを使用するのが良いのですか?

IronXLは、Excelファイルの作成と編集、数式の適用、セルのスタイリング、および複数形式でのデータエクスポートなど多数の利点を提供します。また、パスワード保護などのセキュリティ機能もサポートしています。

Excelワークブックをプログラム的に保存する際のステップは?

IronXLを使用してExcelワークブックを保存するには、SaveAsメソッドを使用し、XLSX、CSV、JSONなどの目的のファイル形式を選択します。

ネットExcelライブラリの無料トライアルはありますか?

はい、IronXLは無料トライアルを提供しており、開発者がコミットする前にその機能をテストできるようにすべての機能に完全にアクセスできます。

ネットExcelライブラリの詳細な資料はどこで見つけられますか?

IronXLの包括的な資料は、ガイドや例を含め公式ウェブサイトで見つけることができます。

Curtis Chau
テクニカルライター

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

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