IronXLを使用して C# で DataGridView を Excel にエクスポートする方法
IronXL を使用すると、DataGridView から Excel ファイルにデータをエクスポートするには、わずか数行の C# コードが必要です。 WorkBook を作成し、グリッドの列と行を反復処理し、各セルの値をワークシートに書き込み、SaveAs を呼び出して、完全にフォーマットされた .xlsx ファイルを生成します。Microsoft Office のインストールは不要です。
WindowsフォームプロジェクトをExcelにエクスポートするように設定するにはどうすればよいですか?
Windows Formsは、 .NETエコシステムにおける基礎的なGUIライブラリであり、デスクトップアプリケーションの構築に広く利用されています。 DataGridView コントロールは、最もよく使用されるコンポーネントの 1 つです。これは、DataTable、データベース クエリの結果、メモリ内のリストなど、バインド可能なソースからの表形式データを表示、編集、管理します。
そのグリッドデータをExcelにエクスポートすることで、関係者へのレポート送信、監査用のスナップショットのアーカイブ、下流の分析ツールへのデータ供給など、日常的なさまざまなニーズに対応できます。 従来のアプローチとしては、Microsoft オフィス相互運用とサードパーティ製ライブラリの2つが挙げられる。 相互運用性を実現するには、アプリケーションを実行するすべてのマシンにExcelがインストールされている必要があり、COMオブジェクトのライフサイクルに関する問題が発生し、サーバーやクラウド環境でのパフォーマンスが低下します。 IronXL 、ClosedXML、 Syncfusionなどのライブラリは、Officeに依存することなくOpen XMLファイル形式に直接書き込むことで、これらの問題を回避します。
このガイドでは、 .NET 10 を対象とした C# でのIronXL のアプローチを説明しますが、 IronXL は.NET Framework 4.6.2 およびすべての最新 for .NETバージョンをサポートしています。
前提条件
エクスポートコードを記述する前に、以下の点が満たされていることを確認してください。
- Visual Studio 2022以降
- .NET 10 SDK がインストールされています
DataGridViewコントロールを含む Windows フォーム アプリ プロジェクト- IronXLをインストールするためのNuGetアクセス
IronXLのインストール方法を教えてください
Visual Studio のパッケージ マネージャー コンソールを開き、以下のいずれかのコマンドを実行します。
Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
または、ソリューションエクスプローラーでプロジェクトを右クリックし、 [NuGetパッケージの管理]を選択して、IronXL.Excel を検索し、 [インストール] をクリックします。

インストール後、Excelの機能を使用するすべてのファイルの先頭にIronXLのusingディレクティブを追加してください。
using IronXL;
using System.Data;
using IronXL;
using System.Data;
Imports IronXL
Imports System.Data
IronXLは、XLSX、XLS、CSV、TSVなど、一般的なスプレッドシート形式をすべてサポートしています。 このガイドでは、最新のExcelバージョンのデフォルト形式であるXLSX形式を全体を通して使用しています。
DataGridViewにサンプルデータを入力するにはどうすればよいですか?
このチュートリアルでは、フォームには DataGridView という名前の DataGridView1 と、btnExport という名前のボタンが含まれています。 グリッドは、フォームの Load イベントで、DataTable に保存されている従業員レコードを使用して入力されます。
void Form1_Load(object sender, EventArgs e)
{
var dt = new DataTable();
// Define columns with the appropriate .NET type
dt.Columns.Add("EmployeeID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Department", typeof(string));
dt.Columns.Add("Salary", typeof(decimal));
// Add sample rows
dt.Rows.Add(101, "Sarah Johnson", "Engineering", 85000m);
dt.Rows.Add(102, "Michael Chen", "Marketing", 72000m);
dt.Rows.Add(103, "Emily Davis", "Finance", 91000m);
dt.Rows.Add(104, "James Wilson", "Engineering", 78000m);
DataGridView1.DataSource = dt;
}
void Form1_Load(object sender, EventArgs e)
{
var dt = new DataTable();
// Define columns with the appropriate .NET type
dt.Columns.Add("EmployeeID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Department", typeof(string));
dt.Columns.Add("Salary", typeof(decimal));
// Add sample rows
dt.Rows.Add(101, "Sarah Johnson", "Engineering", 85000m);
dt.Rows.Add(102, "Michael Chen", "Marketing", 72000m);
dt.Rows.Add(103, "Emily Davis", "Finance", 91000m);
dt.Rows.Add(104, "James Wilson", "Engineering", 78000m);
DataGridView1.DataSource = dt;
}
Option Strict On
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dt As New DataTable()
' Define columns with the appropriate .NET type
dt.Columns.Add("EmployeeID", GetType(Integer))
dt.Columns.Add("Name", GetType(String))
dt.Columns.Add("Department", GetType(String))
dt.Columns.Add("Salary", GetType(Decimal))
' Add sample rows
dt.Rows.Add(101, "Sarah Johnson", "Engineering", 85000D)
dt.Rows.Add(102, "Michael Chen", "Marketing", 72000D)
dt.Rows.Add(103, "Emily Davis", "Finance", 91000D)
dt.Rows.Add(104, "James Wilson", "Engineering", 78000D)
DataGridView1.DataSource = dt
End Sub
各列は特定 for .NET型で定義されているため、後で数値比較や書式設定が正しく機能します。 DataSource プロパティは、DataTable を DataGridView に直接バインドし、フォームが開くとグリッドはすべての行を自動的にレンダリングします。 本番環境では、このデータは通常、ハードコードされた値ではなく、データベースクエリ、ORMの結果セット、またはREST APIのレスポンスから取得されます。

DataGridViewデータモデルの理解
DataGridView は、2 つのコレクションを通じてそのコンテンツを公開します。Columns (メタデータ、HeaderText や列インデックスなど) と Rows (実際のデータセル)。 各 DataGridViewRow には、列位置でインデックス付けされた Cells コレクションが含まれています。 各セルの Value プロパティは、ボックス化されたオブジェクトを返します。このオブジェクトは、Excel セルに書き込む前にキャストまたは変換する必要があります。 この階層構造を理解することは、信頼性の高いエクスポートループを作成する上で不可欠です。
DataTable は内部で入力された値を保存するため、小数点以下の給与はIronXLワークシートに書き込む前に文字列に変換する必要はありません。 IronXL の SetCellValue メソッドは、bool、および DateTime のオーバーロードを受け入れ、出力ファイルで元のデータ型を保持できます。
DataGridViewのデータを列ヘッダー付きでExcelファイルにエクスポートするにはどうすればよいですか?
エクスポート処理は、ボタンのクリックハンドラー内に記述されています。 このコードは新しい WorkBook を作成し、デフォルトのワークシートを取得し、最初の行に列ヘッダーを書き込み、その下に各データ行を書き込みます。
void btnExport_Click(object sender, EventArgs e)
{
var workbook = WorkBook.Create();
var sheet = workbook.DefaultWorkSheet;
// Write column headers to row index 0
for (int col = 0; col < DataGridView1.Columns.Count; col++)
{
sheet.SetCellValue(0, col, DataGridView1.Columns[col].HeaderText);
}
// Write data rows starting at row index 1
for (int row = 0; row < DataGridView1.Rows.Count; row++)
{
for (int col = 0; col < DataGridView1.Columns.Count; col++)
{
object? cellValue = DataGridView1.Rows[row].Cells[col].Value;
if (cellValue is not null)
{
sheet.SetCellValue(row + 1, col, cellValue.ToString()!);
}
}
}
string outputPath = "EmployeeData.xlsx";
workbook.SaveAs(outputPath);
MessageBox.Show("Export complete. File saved to: " + outputPath, "Success");
}
void btnExport_Click(object sender, EventArgs e)
{
var workbook = WorkBook.Create();
var sheet = workbook.DefaultWorkSheet;
// Write column headers to row index 0
for (int col = 0; col < DataGridView1.Columns.Count; col++)
{
sheet.SetCellValue(0, col, DataGridView1.Columns[col].HeaderText);
}
// Write data rows starting at row index 1
for (int row = 0; row < DataGridView1.Rows.Count; row++)
{
for (int col = 0; col < DataGridView1.Columns.Count; col++)
{
object? cellValue = DataGridView1.Rows[row].Cells[col].Value;
if (cellValue is not null)
{
sheet.SetCellValue(row + 1, col, cellValue.ToString()!);
}
}
}
string outputPath = "EmployeeData.xlsx";
workbook.SaveAs(outputPath);
MessageBox.Show("Export complete. File saved to: " + outputPath, "Success");
}
Private Sub btnExport_Click(sender As Object, e As EventArgs)
Dim workbook = WorkBook.Create()
Dim sheet = workbook.DefaultWorkSheet
' Write column headers to row index 0
For col As Integer = 0 To DataGridView1.Columns.Count - 1
sheet.SetCellValue(0, col, DataGridView1.Columns(col).HeaderText)
Next
' Write data rows starting at row index 1
For row As Integer = 0 To DataGridView1.Rows.Count - 1
For col As Integer = 0 To DataGridView1.Columns.Count - 1
Dim cellValue As Object = DataGridView1.Rows(row).Cells(col).Value
If cellValue IsNot Nothing Then
sheet.SetCellValue(row + 1, col, cellValue.ToString())
End If
Next
Next
Dim outputPath As String = "EmployeeData.xlsx"
workbook.SaveAs(outputPath)
MessageBox.Show("Export complete. File saved to: " & outputPath, "Success")
End Sub
WorkBookオブジェクトは、メモリ内のExcelファイル全体を表します。 DefaultWorkSheet は、明示的にシートを作成する必要なく、最初のシートを返します。 外側のループは、HeaderText のヘッダーテキストを行0に書き込みます。 ネストされたループは、各データ行を繰り返し処理し、セル値を文字列に変換する前にnull値をチェックします。 row + 1 オフセットは、データをヘッダー行の下に移動します。 SaveAs は、完成したワークブックをOpen XML XLSX ファイルとして指定されたパスに書き込みます。

生成されたファイルは、Excel、Googleスプレッドシート、またはXLSX形式を読み込める任意のアプリケーションで開くことができます。 列ヘッダーは最初の行に表示され、すべてのデータ行は DataGridView に表示されたのと同じ順序で続きます。
エクスポートしたExcelファイルにセルの書式設定を適用するにはどうすればよいですか?
単純なデータダンプは機能的には問題ありませんが、プレゼンテーションには適していません。 IronXLのスタイリングAPIを使用すると、保存前に任意のセル範囲に太字フォント、背景色、テキスト色、数値形式を適用できます。
void ExportWithFormatting()
{
var workbook = WorkBook.Create();
var sheet = workbook.DefaultWorkSheet;
// Write column headers
for (int col = 0; col < DataGridView1.Columns.Count; col++)
{
sheet.SetCellValue(0, col, DataGridView1.Columns[col].HeaderText);
}
// Style the header row: bold white text on blue background
var headerRange = sheet.GetRange("A1:D1");
headerRange.Style.Font.Bold = true;
headerRange.Style.SetBackgroundColor("#4472C4");
headerRange.Style.Font.SetColor("#FFFFFF");
// Locate the Salary column index
int salaryColIndex = -1;
for (int i = 0; i < DataGridView1.Columns.Count; i++)
{
if (string.Equals(DataGridView1.Columns[i].HeaderText, "Salary",
StringComparison.OrdinalIgnoreCase))
{
salaryColIndex = i;
break;
}
}
// Write data rows, preserving numeric types
for (int row = 0; row < DataGridView1.Rows.Count; row++)
{
if (DataGridView1.Rows[row].IsNewRow) continue;
for (int col = 0; col < DataGridView1.Columns.Count; col++)
{
object? cellValue = DataGridView1.Rows[row].Cells[col].Value;
if (cellValue is null) continue;
int targetRow = row + 1;
if (col == salaryColIndex)
{
// Write salary as a true numeric decimal
if (decimal.TryParse(cellValue.ToString(),
System.Globalization.NumberStyles.Number,
System.Globalization.CultureInfo.InvariantCulture,
out decimal decValue))
{
sheet.SetCellValue(targetRow, col, decValue);
}
else
{
sheet.SetCellValue(targetRow, col, cellValue.ToString()!);
}
}
else
{
sheet.SetCellValue(targetRow, col, cellValue.ToString()!);
}
}
}
// Apply currency format to the salary column data range
var salaryRange = sheet.GetRange("D2:D5");
salaryRange.FormatString = "$#,##0";
workbook.SaveAs("FormattedEmployeeData.xlsx");
}
void ExportWithFormatting()
{
var workbook = WorkBook.Create();
var sheet = workbook.DefaultWorkSheet;
// Write column headers
for (int col = 0; col < DataGridView1.Columns.Count; col++)
{
sheet.SetCellValue(0, col, DataGridView1.Columns[col].HeaderText);
}
// Style the header row: bold white text on blue background
var headerRange = sheet.GetRange("A1:D1");
headerRange.Style.Font.Bold = true;
headerRange.Style.SetBackgroundColor("#4472C4");
headerRange.Style.Font.SetColor("#FFFFFF");
// Locate the Salary column index
int salaryColIndex = -1;
for (int i = 0; i < DataGridView1.Columns.Count; i++)
{
if (string.Equals(DataGridView1.Columns[i].HeaderText, "Salary",
StringComparison.OrdinalIgnoreCase))
{
salaryColIndex = i;
break;
}
}
// Write data rows, preserving numeric types
for (int row = 0; row < DataGridView1.Rows.Count; row++)
{
if (DataGridView1.Rows[row].IsNewRow) continue;
for (int col = 0; col < DataGridView1.Columns.Count; col++)
{
object? cellValue = DataGridView1.Rows[row].Cells[col].Value;
if (cellValue is null) continue;
int targetRow = row + 1;
if (col == salaryColIndex)
{
// Write salary as a true numeric decimal
if (decimal.TryParse(cellValue.ToString(),
System.Globalization.NumberStyles.Number,
System.Globalization.CultureInfo.InvariantCulture,
out decimal decValue))
{
sheet.SetCellValue(targetRow, col, decValue);
}
else
{
sheet.SetCellValue(targetRow, col, cellValue.ToString()!);
}
}
else
{
sheet.SetCellValue(targetRow, col, cellValue.ToString()!);
}
}
}
// Apply currency format to the salary column data range
var salaryRange = sheet.GetRange("D2:D5");
salaryRange.FormatString = "$#,##0";
workbook.SaveAs("FormattedEmployeeData.xlsx");
}
Option Strict On
Sub ExportWithFormatting()
Dim workbook = WorkBook.Create()
Dim sheet = workbook.DefaultWorkSheet
' Write column headers
For col As Integer = 0 To DataGridView1.Columns.Count - 1
sheet.SetCellValue(0, col, DataGridView1.Columns(col).HeaderText)
Next
' Style the header row: bold white text on blue background
Dim headerRange = sheet.GetRange("A1:D1")
headerRange.Style.Font.Bold = True
headerRange.Style.SetBackgroundColor("#4472C4")
headerRange.Style.Font.SetColor("#FFFFFF")
' Locate the Salary column index
Dim salaryColIndex As Integer = -1
For i As Integer = 0 To DataGridView1.Columns.Count - 1
If String.Equals(DataGridView1.Columns(i).HeaderText, "Salary", StringComparison.OrdinalIgnoreCase) Then
salaryColIndex = i
Exit For
End If
Next
' Write data rows, preserving numeric types
For row As Integer = 0 To DataGridView1.Rows.Count - 1
If DataGridView1.Rows(row).IsNewRow Then Continue For
For col As Integer = 0 To DataGridView1.Columns.Count - 1
Dim cellValue As Object = DataGridView1.Rows(row).Cells(col).Value
If cellValue Is Nothing Then Continue For
Dim targetRow As Integer = row + 1
If col = salaryColIndex Then
' Write salary as a true numeric decimal
Dim decValue As Decimal
If Decimal.TryParse(cellValue.ToString(), Globalization.NumberStyles.Number, Globalization.CultureInfo.InvariantCulture, decValue) Then
sheet.SetCellValue(targetRow, col, decValue)
Else
sheet.SetCellValue(targetRow, col, cellValue.ToString())
End If
Else
sheet.SetCellValue(targetRow, col, cellValue.ToString())
End If
Next
Next
' Apply currency format to the salary column data range
Dim salaryRange = sheet.GetRange("D2:D5")
salaryRange.FormatString = "$#,##0"
workbook.SaveAs("FormattedEmployeeData.xlsx")
End Sub
GetRange メソッドは、連続するセルのブロックを選択するために、標準の Excel 表記 (A1:D1) を受け入れます。 Style.Font.SetColorを設定すると、選択した範囲内のすべてのセルにこれらの書式が適用されます。 数値列の場合、値を文字列ではなく decimal として書き込むことで、データ型がそのまま維持され、Excel は $#,##0 などの数値書式を正しく適用できます。 文字列として保存されたセルは、数値書式コードに対応していません。

IronXLのスタイル設定に関するドキュメントを参照すれば、このパターンを拡張して、行の交互の網掛け、列幅の自動調整、またはウィンドウ枠の固定を適用できます。
DataGridViewのデータをXLSXではなくCSV形式でエクスポートするにはどうすればよいですか?
一部のワークフローでは、レガシーシステムとの互換性や軽量データパイプラインのために、CSV出力が必要となります。 IronXLは、メインコードに追加の設定変更を加えることなく、CSVエクスポートを処理します。
void ExportToCsv()
{
var workbook = WorkBook.Create();
var sheet = workbook.DefaultWorkSheet;
for (int col = 0; col < DataGridView1.Columns.Count; col++)
{
sheet.SetCellValue(0, col, DataGridView1.Columns[col].HeaderText);
}
for (int row = 0; row < DataGridView1.Rows.Count; row++)
{
if (DataGridView1.Rows[row].IsNewRow) continue;
for (int col = 0; col < DataGridView1.Columns.Count; col++)
{
object? cell = DataGridView1.Rows[row].Cells[col].Value;
if (cell is not null)
sheet.SetCellValue(row + 1, col, cell.ToString()!);
}
}
// Saving with a .csv extension produces a comma-separated file
workbook.SaveAs("EmployeeData.csv");
}
void ExportToCsv()
{
var workbook = WorkBook.Create();
var sheet = workbook.DefaultWorkSheet;
for (int col = 0; col < DataGridView1.Columns.Count; col++)
{
sheet.SetCellValue(0, col, DataGridView1.Columns[col].HeaderText);
}
for (int row = 0; row < DataGridView1.Rows.Count; row++)
{
if (DataGridView1.Rows[row].IsNewRow) continue;
for (int col = 0; col < DataGridView1.Columns.Count; col++)
{
object? cell = DataGridView1.Rows[row].Cells[col].Value;
if (cell is not null)
sheet.SetCellValue(row + 1, col, cell.ToString()!);
}
}
// Saving with a .csv extension produces a comma-separated file
workbook.SaveAs("EmployeeData.csv");
}
Sub ExportToCsv()
Dim workbook = WorkBook.Create()
Dim sheet = workbook.DefaultWorkSheet
For col As Integer = 0 To DataGridView1.Columns.Count - 1
sheet.SetCellValue(0, col, DataGridView1.Columns(col).HeaderText)
Next
For row As Integer = 0 To DataGridView1.Rows.Count - 1
If DataGridView1.Rows(row).IsNewRow Then Continue For
For col As Integer = 0 To DataGridView1.Columns.Count - 1
Dim cell As Object = DataGridView1.Rows(row).Cells(col).Value
If cell IsNot Nothing Then
sheet.SetCellValue(row + 1, col, cell.ToString())
End If
Next
Next
' Saving with a .csv extension produces a comma-separated file
workbook.SaveAs("EmployeeData.csv")
End Sub
XLSX エクスポートからの唯一の変更点は、SaveAs に渡されるファイル拡張子です。 IronXLは拡張子を検出し、ワークブックを正しい形式に自動的にシリアル化します。 この一貫性により、出力形式に関係なくデータ書き込みロジックは同一のまま維持されます。これは、形式ごとに個別のコードパスを必要とするライブラリに比べて大きな利点です。
CSVエクスポートは、下流の処理対象がPythonのpandasスクリプト、データベースの一括インポートツール、またはバイナリXLSXファイルを読み取ることができない分析プラットフォームである場合に特に役立ちます。
大規模なDataGridViewデータセットを効率的に処理するにはどうすればよいですか?
数万行を含むグリッドの場合、パフォーマンスが考慮事項となる。 以下のパターンは、データセット全体を一度の処理で構築することで、メモリ負荷を軽減します。
| アプローチ | 処理された行数 | オフィス勤務必須 | タイプの保存 |
|---|---|---|---|
| Microsoft.Office.Interop.Excel | 最大約65k(低速) | はい | 部分的 |
| IronXL (ストリングセル) | 100万行以上 | なし | いいえ(全文) |
| IronXL (入力済みセル) | 100万行以上 | なし | はい |
| データテーブルからのIronXL | 100万行以上 | なし | はい(自動) |
DataGridView が DataTable にバインドされている場合、 WorkSheet.LoadDataTableメソッドを使用してテーブルをIronXLに直接ロードすることができ、セルごとの反復処理を完全にスキップできます。 この方法はより高速で、すべての列の型を自動的に保持します。
DataTable によって裏付けられていないグリッドの場合、先に示したセルごとのパターンが標準的なアプローチとなります。 大規模なエクスポート中に UI の応答性を維持するために非同期でエクスポートする必要がある場合は、エクスポート ロジックを Task.Run 呼び出しでラップし、バックグラウンド スレッドで結果を await します。 結果をUIスレッドにマーシャリングする際のパターンについては、非同期ファイル操作のドキュメントを参照してください。
IronXLがDataGridViewのエクスポートにおいてオフィス相互運用よりも優れている理由は?
従来 for .NETソリューションでは、実行中の Excel プロセスを駆動するために Microsoft.Office.Interop.Excel が使用されていました。 そのアプローチは、導入と信頼性に関していくつかの問題を引き起こす。
アプリケーションを実行するすべてのマシンには、Microsoft Excel のライセンス版がインストールされている必要があります。
- 通常、サーバー環境やクラウドコンテナではOfficeをインストールできません COM相互運用では、メモリリークやゾンビExcelプロセスを回避するために、すべてのオブジェクトを明示的に解放する必要があります。 COM境界を越えたエラー処理は冗長で脆弱である。 行数が増えるにつれてパフォーマンスが急速に低下する
IronXLは、外部プロセスを起動することなく、 OOXMLファイル形式に直接書き込みます。 アプリケーションは自己完結型のユニットとしてデプロイされます。 このライブラリの API は完全に管理された.NETなので、ガベージ コレクションは Marshal.ReleaseComObject 呼び出しなしでメモリを自動的に処理します。 プロセス間通信が発生しないため、処理速度が大幅に向上します。
代替案を検討しているチームにとって、 ClosedXMLは人気の高いオープンソースの選択肢の一つです。 IronXLは、 PDF変換、グラフ作成、商用サポートなど、より幅広い機能を提供しており、これらはEnterpriseの調達決定における重要な要素となる可能性がある。 IronXLのライセンスオプションを確認し、チームの規模と導入シナリオに最適なプランを選択してください。
| 特徴 | IronXL | オフィス相互運用 |
|---|---|---|
| オフィスへのインストールが必要です | なし | はい |
| サーバー/クラウド展開 | はい | いいえ(サポート対象外) |
| マネージドメモリモデル | はい | いいえ(COMクリーンアップは不要です) |
| XLSX / CSV / XLS形式 | 3人全員 | インストールされているExcelによって異なります |
| スプレッドシートからのPDFエクスポート | はい | 追加のライブラリが必要です |
IronXLのチュートリアルセクションでは、既存のExcelファイルの読み込み、テンプレートの変更、グラフの生成、条件付き書式の適用などについて解説しています。これらはすべて、ここで紹介するDataGridViewのエクスポートパターンから自然に拡張できる機能です。
次のステップは何ですか?
これで、 IronXLを使用して DataGridView をフォーマット済みの Excel ファイルにエクスポートする C# コードが動作するようになりました。 ここからは、以下の方向性を検討してください。
-エラー処理を追加:エクスポートコードを try/catch ブロックで囲み、ファイルがロックされている場合やパスが無効な場合は、ユーザーフレンドリーなメッセージを表示します。
-ファイルパス選択のサポート: SaveFileDialog を使用して、実行時にユーザーが出力場所とファイル名を選択できるようにします。
-実際のデータをロードする:サンプル DataTable を、 ADO .NETまたは Entity Framework を使用したデータベースクエリに置き換えます。
-既存ファイルの読み込み: WorkBook.Loadを使用して既存のスプレッドシートを開き、常に新しいスプレッドシートを作成するのではなく、それを更新します。
-複数のシートにエクスポート: 関連するデータセットを整理するために、同じシート内に追加のオブジェクトを作成します。
-条件付き書式を適用する:IronXLの条件付き書式APIを使用して、しきい値を超えるセルを強調表示する
-ライセンスオプションを確認してください。無料トライアルが利用可能です。 ライセンス階層は、個人開発者からEnterprise規模での導入までをカバーしています。
-完全なAPIリファレンスを参照: IronXLオブジェクトリファレンスには、利用可能なすべてのクラスとメソッドが記載されています。
よくある質問
C# で DataGridView データを Excel にエクスポートする最も簡単な方法は何ですか?
IronXLを使用すると、列ヘッダーとデータ行を WorkBook オブジェクトに書き込み、SaveAs を呼び出して XLSX ファイルを生成する短いループ処理で、C# で DataGridView データを Excel にエクスポートできます。Microsoft Office のインストールは不要です。
IronXLを使用して C# Windows フォーム アプリケーションで Excel ファイルを処理する方法を教えてください。
NuGet経由でIronXLをインストールし、 using IronXLディレクティブを追加し、 WorkBook.Create() を使用して WorkBook を作成し、 SetCellValue を使用してデータを書き込み、 SaveAs を使用して保存します。IronXLはXLSX、XLS、CSV 形式をサポートしています。
IronXLは大きなDataGridViewデータセットのExcelへのエクスポートをサポートしていますか?
はい、 IronXLは大規模なデータセットを効率的に処理します。DataTableに基づくDataGridViewの場合、LoadDataTableメソッドを使用してセルごとの反復処理をバイパスし、パフォーマンスをさらに向上させることができます。
IronXLを使用するには Microsoft Excel をインストールする必要がありますか?
いいえ。IronXLはExcelやCOMオートメーションを起動することなく、Open XMLファイル形式に直接書き込みます。IronXLで構築されたアプリケーションは、Officeが利用できないサーバーやクラウド環境に展開できます。
Excel エクスポートに Office Interop ではなくIronXLを使用する利点は何ですか?
IronXL はOffice のインストールを必要とせず、COM メモリ リークの問題を回避し、サーバーおよびクラウドの展開をサポートし、XLSX、XLS、および CSV ファイルの読み取りと書き込み用のクリーンな管理された.NET API を提供します。
IronXL はDataGridView データを XLSX だけでなく CSV にもエクスポートできますか?
はい。WorkBook.SaveAs に .csv ファイルのパスを渡すと、カンマ区切りのファイルが生成されます。データ書き込みコードはどちらの形式でも同じで、ファイル拡張子のみが異なります。
IronXLを使用してエクスポートされた Excel セルに書式設定を適用するにはどうすればよいでしょうか?
WorkSheet.GetRange を使用してセル範囲を選択し、Style プロパティにアクセスして、数値書式の Font.Bold、SetBackgroundColor、Font.SetColor、および FormatString を設定します。
C# プロジェクトでIronXLを使い始めるにはどうすればよいでしょうか?
プロジェクトでInstall-Package IronXLまたは dotnet add package IronXLを実行し、ファイルの先頭に using IronXLを追加して、ironsoftware.com/csharp/excel/ にあるIronXLドキュメントの例に従います。



