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

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
SHELL

または、ソリューションエクスプローラーでプロジェクトを右クリックし、 [NuGetパッケージの管理]を選択して、IronXl.Excel を検索し、 [インストール] をクリックします。

VB .NET 2010でIronXLを使用してDataGridViewからExcelにデータをエクスポートする:イメージ1 - インストール

インストール後、Excelの機能を使用するすべてのファイルの先頭にIronXLのusingディレクティブを追加してください。

using IronXL;
using System.Data;
using IronXL;
using System.Data;
Imports IronXL
Imports System.Data
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

各列は特定 for .NET型で定義されているため、後で数値比較や書式設定が正しく機能します。 DataSource プロパティは、DataTableDataGridView に直接バインドし、フォームが開くとグリッドはすべての行を自動的にレンダリングします。 本番環境では、このデータは通常、ハードコードされた値ではなく、データベースクエリ、ORMの結果セット、またはREST APIのレスポンスから取得されます。

VB .NET 2010でIronXLを使用してDataGridViewからExcelにデータをエクスポートする:画像2 - DataGridViewの出力

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
$vbLabelText   $csharpLabel

WorkBookオブジェクトは、メモリ内のExcelファイル全体を表します。 DefaultWorkSheet は、明示的にシートを作成する必要なく、最初のシートを返します。 外側のループは、HeaderText のヘッダーテキストを行0に書き込みます。 ネストされたループは、各データ行を繰り返し処理し、セル値を文字列に変換する前にnull値をチェックします。 row + 1 オフセットは、データをヘッダー行の下に移動します。 SaveAs は、完成したワークブックをOpen XML XLSX ファイルとして指定されたパスに書き込みます。

VB .NET 2010でIronXLを使用してDataGridViewからExcelにデータをエクスポートする:画像3 - Excel出力

生成されたファイルは、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
$vbLabelText   $csharpLabel

GetRange メソッドは、連続するセルのブロックを選択するために、標準の Excel 表記 (A1:D1) を受け入れます。 Style.Font.SetColorを設定すると、選択した範囲内のすべてのセルにこれらの書式が適用されます。 数値列の場合、値を文字列ではなく decimal として書き込むことで、データ型がそのまま維持され、Excel は $#,##0 などの数値書式を正しく適用できます。 文字列として保存されたセルは、数値書式コードに対応していません。

VB .NET 2010でIronXLを使用してDataGridViewからExcelにデータをエクスポートする:画像4 - フォーマットされたExcel出力

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
$vbLabelText   $csharpLabel

XLSX エクスポートからの唯一の変更点は、SaveAs に渡されるファイル拡張子です。 IronXLは拡張子を検出し、ワークブックを正しい形式に自動的にシリアル化します。 この一貫性により、出力形式に関係なくデータ書き込みロジックは同一のまま維持されます。これは、形式ごとに個別のコードパスを必要とするライブラリに比べて大きな利点です。

CSVエクスポートは、下流の処理対象がPythonのpandasスクリプト、データベースの一括インポートツール、またはバイナリXLSXファイルを読み取ることができない分析プラットフォームである場合に特に役立ちます。

大規模なDataGridViewデータセットを効率的に処理するにはどうすればよいですか?

数万行を含むグリッドの場合、パフォーマンスが考慮事項となる。 以下のパターンは、データセット全体を一度の処理で構築することで、メモリ負荷を軽減します。

大規模データセットにおけるIronXLのエクスポート方法の比較
アプローチ 処理された行数 オフィス勤務必須 タイプの保存
Microsoft.Office.Interop.Excel 最大約65k(低速) はい 部分的
IronXL (ストリングセル) 100万行以上 なし いいえ(全文)
IronXL (入力済みセル) 100万行以上 なし はい
データテーブルからのIronXL 100万行以上 なし はい(自動)

DataGridViewDataTable にバインドされている場合、 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 vs オフィス相互運用
特徴 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ドキュメントの例に従います。

カーティス・チャウ
テクニカルライター

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

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

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね