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

C# 列ヘッダー付きの DataGridView を Excel にエクスポートする

C#でDataGridViewを列ヘッダー付きでExcelにエクスポートするにはどうすればよいですか?

Windows Forms DataGridView コントロールから Excel 形式にデータをエクスポートすることはよくある要件ですが、開発者はしばしば厄介な問題に直面します。それは、エクスポートされたファイルに列ヘッダーが欠落していることです。 DataGridViewを列ヘッダー付きでExcelにエクスポートする必要がある場合、ソリューションはすべてのデータと書式設定を確実に保持する必要があります。 Microsoft Office Interop を使用した従来のアプローチは、動作が遅く、不安定で、コードを実行するすべてのマシンに MS Excel をインストールする必要があるという問題がある。

IronXLはこの問題をきれいに解決します。 これは、Officeに依存することなくExcelファイルの読み込み、作成、書き込みを行う.NET Excelライブラリです。 このチュートリアルでは、列ヘッダー、データ型、NULLセル、そしてユーザーフレンドリーなファイル保存をわずか数行のコードで処理する、完全なエクスポートソリューションを解説します。

最終的には、すべての列ヘッダーを保持したままDataGridViewをXLSXファイルにエクスポートする、動作するWindowsフォームのボタンハンドラーが完成します。

始める前に必要なもの

コードを記述する前に、以下の点が満たされていることを確認してください。

  • Visual Studio 2022以降(どのエディションでも可)
  • .NET 10 SDK がインストールされています
  • .NET 10 をターゲットとする Windows フォーム アプリケーション プロジェクト
  • IronXLをインストールするためのNuGetアクセス

以下の例では、トップレベルのステートメントと最新 for .NET 10プロジェクト構造を全面的に使用しています。

.NETプロジェクトにライブラリをインストールするにはどうすればよいですか?

Visual Studio でNuGetパッケージ マネージャー コンソールを開き、次のいずれかのコマンドを実行します。 このパッケージはNuGetギャラリーに掲載されており、 .NET Standard 2.0以降を対象としているため、最新 for .NETプロジェクトであればどれでも動作します。

Install-Package IronXL
Install-Package IronXL
SHELL
dotnet add package IronXL
dotnet add package IronXL
SHELL

インストール後、フォームファイルの先頭に必要な名前空間を追加してください。

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

これらのインポートにより、IronXLのExcel機能、DataTable操作、およびエクスポート処理に必要なWindowsフォームコントロールにアクセスできるようになります。

サンプルデータを使用してDataGridViewを設定するにはどうすればよいですか?

まず、Visual StudioでWindowsフォームアプリケーションを作成します。 デザイナーを使用して、メインフォームに"dataGridView1"という名前の DataGridView と"btnExport"という名前の Button を追加します。 次に、フォーム読み込み時にグリッドにデータを入力します。

using System;
using System.Data;
using System.Windows.Forms;

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();

        // Define columns -- these names become Excel headers
        dt.Columns.Add("Product ID", typeof(int));
        dt.Columns.Add("Product Name", typeof(string));
        dt.Columns.Add("Price", typeof(decimal));
        dt.Columns.Add("Stock Quantity", typeof(int));

        // Add sample rows
        dt.Rows.Add(1001, "Laptop", 999.99m, 15);
        dt.Rows.Add(1002, "Mouse", 29.99m, 50);
        dt.Rows.Add(1003, "Keyboard", 79.99m, 30);
        dt.Rows.Add(1004, "Monitor", 299.99m, 12);
        dt.Rows.Add(1005, "Headphones", 89.99m, 25);

        // Bind data to the grid
        dataGridView1.DataSource = dt;
    }
}
using System;
using System.Data;
using System.Windows.Forms;

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();

        // Define columns -- these names become Excel headers
        dt.Columns.Add("Product ID", typeof(int));
        dt.Columns.Add("Product Name", typeof(string));
        dt.Columns.Add("Price", typeof(decimal));
        dt.Columns.Add("Stock Quantity", typeof(int));

        // Add sample rows
        dt.Rows.Add(1001, "Laptop", 999.99m, 15);
        dt.Rows.Add(1002, "Mouse", 29.99m, 50);
        dt.Rows.Add(1003, "Keyboard", 79.99m, 30);
        dt.Rows.Add(1004, "Monitor", 299.99m, 12);
        dt.Rows.Add(1005, "Headphones", 89.99m, 25);

        // Bind data to the grid
        dataGridView1.DataSource = dt;
    }
}
Imports System
Imports System.Data
Imports System.Windows.Forms

Public Partial Class Form1
    Inherits Form

    Public Sub New()
        InitializeComponent()
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim dt As New DataTable()

        ' Define columns -- these names become Excel headers
        dt.Columns.Add("Product ID", GetType(Integer))
        dt.Columns.Add("Product Name", GetType(String))
        dt.Columns.Add("Price", GetType(Decimal))
        dt.Columns.Add("Stock Quantity", GetType(Integer))

        ' Add sample rows
        dt.Rows.Add(1001, "Laptop", 999.99D, 15)
        dt.Rows.Add(1002, "Mouse", 29.99D, 50)
        dt.Rows.Add(1003, "Keyboard", 79.99D, 30)
        dt.Rows.Add(1004, "Monitor", 299.99D, 12)
        dt.Rows.Add(1005, "Headphones", 89.99D, 25)

        ' Bind data to the grid
        dataGridView1.DataSource = dt
    End Sub
End Class
$vbLabelText   $csharpLabel

dt.Columns.Add(...) の呼び出しで定義された列名は、エクスポートされた Excel ファイルのヘッダー行になります。ここでは任意のデータソースを指定できます。データベースクエリの結果、CSV インポート、または DataTable として保存された API レスポンスなど、いずれのデータソースも、後述のエクスポートコードと全く同じように動作します。 DataTable のアプローチは特に便利です。なぜなら、DataGridView は任意の IList または IBindingList を受け入れる DataSource プロパティを公開しているため、同じエクスポート コードが変更なしですべてのバインディング シナリオに一般化されるからです。

DataGridView が SqlDataAdapter を使用してデータベースからデータを取り込んでいる場合、DataTable には既に型付きの列が含まれています。 入力した値を ToString() を呼び出すのではなく SetCellValue に渡すことで、Excel 出力の数値列が数値のまま維持されます。これは、後続のレポート作成やピボットテーブルの使用において重要です。

これにより、すべてのデータが入力されたDataGridViewが作成されます。

C# IronXLを使用して列ヘッダー付きの DataGridView を Excel にエクスポートする : 画像 1 - DataGridView のサンプルデータ

より高度なデータバインディングのシナリオについては、Microsoft のDataGridView データバインディングに関するドキュメントに、追加の例が記載されています。

列ヘッダーを保持したまま、DataGridViewをExcelにエクスポートするにはどうすればよいですか?

エクスポートメソッドは、各 DataGridView 列の HeaderText プロパティから列ヘッダーを読み取り、ワークシートの 0 行目に書き込みます。 データ行は1行目以降に続きます。 このメソッドを btnExport クリック イベントに接続します。

private void btnExport_Click(object sender, EventArgs e)
{
    try
    {
        // Create a new Excel workbook in XLSX format
        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet worksheet = workbook.CreateWorkSheet("Exported Data");

        // Write column headers to row 0
        for (int col = 0; col < dataGridView1.Columns.Count; col++)
        {
            worksheet.SetCellValue(0, col, dataGridView1.Columns[col].HeaderText);
        }

        // Write data rows starting at row 1
        for (int row = 0; row < dataGridView1.Rows.Count; row++)
        {
            // Skip the placeholder new-row at the bottom of the grid
            if (dataGridView1.AllowUserToAddRows && row == dataGridView1.Rows.Count - 1)
                continue;

            for (int col = 0; col < dataGridView1.Columns.Count; col++)
            {
                var cellValue = dataGridView1.Rows[row].Cells[col].Value;
                if (cellValue != null)
                {
                    worksheet.SetCellValue(row + 1, col, cellValue.ToString());
                }
            }
        }

        // Prompt the user to choose a save location
        using SaveFileDialog saveFileDialog = new SaveFileDialog
        {
            Filter = "Excel Files|*.xlsx",
            FileName = "DataGridView_Export.xlsx"
        };

        if (saveFileDialog.ShowDialog() == DialogResult.OK)
        {
            workbook.SaveAs(saveFileDialog.FileName);
            MessageBox.Show("Export completed successfully!", "Success",
                            MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show($"Export failed: {ex.Message}", "Error",
                       MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}
private void btnExport_Click(object sender, EventArgs e)
{
    try
    {
        // Create a new Excel workbook in XLSX format
        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet worksheet = workbook.CreateWorkSheet("Exported Data");

        // Write column headers to row 0
        for (int col = 0; col < dataGridView1.Columns.Count; col++)
        {
            worksheet.SetCellValue(0, col, dataGridView1.Columns[col].HeaderText);
        }

        // Write data rows starting at row 1
        for (int row = 0; row < dataGridView1.Rows.Count; row++)
        {
            // Skip the placeholder new-row at the bottom of the grid
            if (dataGridView1.AllowUserToAddRows && row == dataGridView1.Rows.Count - 1)
                continue;

            for (int col = 0; col < dataGridView1.Columns.Count; col++)
            {
                var cellValue = dataGridView1.Rows[row].Cells[col].Value;
                if (cellValue != null)
                {
                    worksheet.SetCellValue(row + 1, col, cellValue.ToString());
                }
            }
        }

        // Prompt the user to choose a save location
        using SaveFileDialog saveFileDialog = new SaveFileDialog
        {
            Filter = "Excel Files|*.xlsx",
            FileName = "DataGridView_Export.xlsx"
        };

        if (saveFileDialog.ShowDialog() == DialogResult.OK)
        {
            workbook.SaveAs(saveFileDialog.FileName);
            MessageBox.Show("Export completed successfully!", "Success",
                            MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show($"Export failed: {ex.Message}", "Error",
                       MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}
Private Sub btnExport_Click(sender As Object, e As EventArgs)
    Try
        ' Create a new Excel workbook in XLSX format
        Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
        Dim worksheet As WorkSheet = workbook.CreateWorkSheet("Exported Data")

        ' Write column headers to row 0
        For col As Integer = 0 To dataGridView1.Columns.Count - 1
            worksheet.SetCellValue(0, col, dataGridView1.Columns(col).HeaderText)
        Next

        ' Write data rows starting at row 1
        For row As Integer = 0 To dataGridView1.Rows.Count - 1
            ' Skip the placeholder new-row at the bottom of the grid
            If dataGridView1.AllowUserToAddRows AndAlso row = dataGridView1.Rows.Count - 1 Then
                Continue For
            End If

            For col As Integer = 0 To dataGridView1.Columns.Count - 1
                Dim cellValue = dataGridView1.Rows(row).Cells(col).Value
                If cellValue IsNot Nothing Then
                    worksheet.SetCellValue(row + 1, col, cellValue.ToString())
                End If
            Next
        Next

        ' Prompt the user to choose a save location
        Using saveFileDialog As New SaveFileDialog With {
            .Filter = "Excel Files|*.xlsx",
            .FileName = "DataGridView_Export.xlsx"
        }
            If saveFileDialog.ShowDialog() = DialogResult.OK Then
                workbook.SaveAs(saveFileDialog.FileName)
                MessageBox.Show("Export completed successfully!", "Success",
                                MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
        End Using
    Catch ex As Exception
        MessageBox.Show($"Export failed: {ex.Message}", "Error",
                       MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try
End Sub
$vbLabelText   $csharpLabel

エクスポート手順の詳細

この方法の各ステップには、それぞれ特定の目的があります。

  • WorkBook.Create : XLSX形式を使用して、メモリ上に新しいExcelファイルを初期化します。 SaveAs が呼び出されるまで、ファイルはディスクに書き込まれません。
  • CreateWorkSheet : エクスポートされたデータを格納するための名前付きシートを追加します。 Excelでは、タブのラベルとして"エクスポートされたデータ"という名前が表示されます。 -列ヘッダーのループ: 各列の dataGridView1.Columns[col].HeaderText を読み取り、行インデックス 0 に書き込みます。これはヘッダーを保持するための重要なステップです。 -データ行ループ: ネストされたループは、Excel の行インデックスとして row + 1 を使用してすべての行と列を反復処理するため、データは常にヘッダー行の下から始まります。 -ヌル値チェック:セルに値が含まれていない場合に発生する例外を防ぎます。これは実際のデータではよくあることです。
  • SaveFileDialog : 実行時にパスをハードコーディングするのではなく、ユーザーがファイル名と保存先を選択できるようにします。

エクスポートされたファイルは次のようになります。

C# IronXLを使用して列ヘッダー付きの DataGridView を Excel にエクスポートする : 画像 2 - エクスポートされたサンプルデータを含む出力 Excel ファイル

エクスポート時に発生する一般的なエッジケースにはどのように対処しますか?

実際のデータは、サンプルデータセットのようにきれいに整理されていることはめったにない。 ここでは、遭遇する可能性が最も高いシナリオと、それらへの対処法をご紹介します。

空のセル

データループ内の null チェック (if (cellValue != null)) は、例外をスローせずに空のセルを処理します。 Excelの出力では、空のセルは空白のままとなり、グリッド構造が維持されます。

混合データ型

IronXLは様々なデータ形式を自動的に処理します。 ToString() を介して数値を文字列として渡した場合でも、Excel は値によってはそれを数値として認識する場合があります。 正確な型制御を行うには、セル値を書き込む前に適切な型にキャストしてください。

if (cellValue is int intVal)
    worksheet.SetCellValue(row + 1, col, intVal);
else if (cellValue is decimal decVal)
    worksheet.SetCellValue(row + 1, col, (double)decVal);
else
    worksheet.SetCellValue(row + 1, col, cellValue?.ToString() ?? string.Empty);
if (cellValue is int intVal)
    worksheet.SetCellValue(row + 1, col, intVal);
else if (cellValue is decimal decVal)
    worksheet.SetCellValue(row + 1, col, (double)decVal);
else
    worksheet.SetCellValue(row + 1, col, cellValue?.ToString() ?? string.Empty);
If TypeOf cellValue Is Integer Then
    Dim intVal As Integer = CType(cellValue, Integer)
    worksheet.SetCellValue(row + 1, col, intVal)
ElseIf TypeOf cellValue Is Decimal Then
    Dim decVal As Decimal = CType(cellValue, Decimal)
    worksheet.SetCellValue(row + 1, col, CDbl(decVal))
Else
    worksheet.SetCellValue(row + 1, col, If(cellValue?.ToString(), String.Empty))
End If
$vbLabelText   $csharpLabel

この方法では、Excel の数値列は数値のまま保持されるため、後続の処理で数式や並べ替えが正しく機能します。

ヘッダー内の特殊文字

>などの特殊文字やアクセント付き文字を含む列ヘッダーは正しくエクスポートされます。 IronXLはエンコードを自動的に処理するため、ユーザー側でエスケープ処理を行う必要はありません。

大規模データセット

数万行を含むグリッドの場合、UI の応答性を維持するために、エクスポート ロジックをバックグラウンド スレッドに移動することを検討してください。WorkBook.Create とループ ロジックを Task.Run 呼び出しでラップし、完了したコールバックから UI を更新します。 MicrosoftのTaskを使用した非同期プログラミングに関するドキュメントでは、このパターンが詳細に説明されています。

セルのスタイル設定数式の保持、パスワード保護などのその他のシナリオについては、 IronXLのドキュメントでそれぞれ詳細に説明されています。

主な輸出手法を比較するとどう違うのか?

ライブラリを導入する前に、最も一般的な方法間のトレードオフを理解しておくと役立ちます。

C#におけるDataGridViewとExcelのエクスポート方法の比較
方法 オフィス必須 列ヘッダー パフォーマンス サーバーセーフ
Microsoft Office Interop はい マニュアル 遅い なし
OpenXml SDK なし マニュアル 速い はい
ClosedXML なし マニュアル 良い はい
IronXL なし 自動翻訳 速い はい

相互運用性に基づくソリューションでは、サーバーにExcelをインストールする必要がありますが、これはライセンス上の問題と導入の複雑さの両方につながります。 OpenXml SDKは強力だが低レベルであり、ヘッダー行を書き込むにはXML構造を手動で構築する必要がある。 IronXLとClosedXMLはどちらも高レベルのAPIを提供していますが、IronXLのWorkBookとWorkSheetモデルは、開発者がスプレッドシートについて既に考えている方法に非常に近いものです。

XLSXではなくCSV形式でエクスポートするにはどうすればよいですか?

ExcelワークブックではなくCSVファイルが必要な場合も、同じエクスポート手順が適用されます。 ファイル形式と拡張子を変更します。

WorkBook csvWorkbook = WorkBook.Create(ExcelFileFormat.CSV);
WorkSheet csvSheet = csvWorkbook.CreateWorkSheet("Data");

// Headers and data loops remain identical

using SaveFileDialog dialog = new SaveFileDialog
{
    Filter = "CSV Files|*.csv",
    FileName = "DataGridView_Export.csv"
};

if (dialog.ShowDialog() == DialogResult.OK)
    csvWorkbook.SaveAs(dialog.FileName);
WorkBook csvWorkbook = WorkBook.Create(ExcelFileFormat.CSV);
WorkSheet csvSheet = csvWorkbook.CreateWorkSheet("Data");

// Headers and data loops remain identical

using SaveFileDialog dialog = new SaveFileDialog
{
    Filter = "CSV Files|*.csv",
    FileName = "DataGridView_Export.csv"
};

if (dialog.ShowDialog() == DialogResult.OK)
    csvWorkbook.SaveAs(dialog.FileName);
Imports System.Windows.Forms

Dim csvWorkbook As WorkBook = WorkBook.Create(ExcelFileFormat.CSV)
Dim csvSheet As WorkSheet = csvWorkbook.CreateWorkSheet("Data")

' Headers and data loops remain identical

Using dialog As New SaveFileDialog With {
    .Filter = "CSV Files|*.csv",
    .FileName = "DataGridView_Export.csv"
}
    If dialog.ShowDialog() = DialogResult.OK Then
        csvWorkbook.SaveAs(dialog.FileName)
    End If
End Using
$vbLabelText   $csharpLabel

CSVエクスポートは、受信側のシステムがXLSXをサポートしていない場合や、非常に大きなデータセットの場合にファイルサイズが問題となる場合に便利です。

エクスポートしたファイルのヘッダー行のスタイルを設定するにはどうすればよいですか?

ヘッダー行が視覚的に区別できると、エクスポートされたデータはより読みやすくなります。 IronXLには、ヘッダー値を書き込んだ後に太字、背景色、フォントサイズなどを適用できるセルスタイル設定オプションが用意されています。

// Write headers and apply bold styling
for (int col = 0; col < dataGridView1.Columns.Count; col++)
{
    string cellAddress = worksheet.GetCellAddress(0, col);
    worksheet[cellAddress].Value = dataGridView1.Columns[col].HeaderText;
    worksheet[cellAddress].Style.Font.Bold = true;
    worksheet[cellAddress].Style.SetBackgroundColor("#4472C4");
    worksheet[cellAddress].Style.Font.FontColor = "#FFFFFF";
}
// Write headers and apply bold styling
for (int col = 0; col < dataGridView1.Columns.Count; col++)
{
    string cellAddress = worksheet.GetCellAddress(0, col);
    worksheet[cellAddress].Value = dataGridView1.Columns[col].HeaderText;
    worksheet[cellAddress].Style.Font.Bold = true;
    worksheet[cellAddress].Style.SetBackgroundColor("#4472C4");
    worksheet[cellAddress].Style.Font.FontColor = "#FFFFFF";
}
' Write headers and apply bold styling
For col As Integer = 0 To dataGridView1.Columns.Count - 1
    Dim cellAddress As String = worksheet.GetCellAddress(0, col)
    worksheet(cellAddress).Value = dataGridView1.Columns(col).HeaderText
    worksheet(cellAddress).Style.Font.Bold = True
    worksheet(cellAddress).Style.SetBackgroundColor("#4472C4")
    worksheet(cellAddress).Style.Font.FontColor = "#FFFFFF"
Next col
$vbLabelText   $csharpLabel

スタイルが適用されたヘッダー行により、エクスポートされたファイルは受信者が手動で書式設定を行う必要なく、すぐにレポート作成に使用できます。 スタイルプロパティの完全なリストについては、 IronXL のセル スタイル設定リファレンスを参照してください。

無料トライアルを始めるにはどうすればいいですか?

IronXLは、この記事で紹介されているエクスポートワークフローを含むすべての機能を試せる無料トライアルを提供しています。 上記に示したいずれかのNuGetコマンドを使用してパッケージをインストールし、 IronXL のライセンス ページで試用版キーを生成し、最初のライブラリ呼び出しの前にアプリケーションにそのキーを設定してください。

IronXl.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
IronXl.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
Imports IronXl

IronXl.License.LicenseKey = "YOUR-LICENSE-KEY-HERE"
$vbLabelText   $csharpLabel

この試用版では、完全に機能するExcelファイルが生成され、利用可能な機能に制限はありません。 本番環境への導入に関しては、ライセンスオプションとして、個人開発者向け、チーム向け、およびロイヤリティフリーの再配布が利用可能です。

関連するエクスポートシナリオについては、 IronXLがDataTablesをExcelに直接エクスポートする方法、 ExcelファイルをDataGridViewに読み込む方法、およびエクスポートされたデータからグラフを作成する方法を参照してください。

ユースケースに最適なエクスポート戦略を選択する

このチュートリアル全体を通して紹介する、セルごとの簡単なエクスポート方法は、ほとんどのWindowsフォームアプリケーションに適しています。 DataGridViewがDataTableにバインドされている場合は、DataTableをIronXLのDataTable to worksheetコンバーターに直接渡すこともできます。このコンバーターはヘッダー行を自動的に処理します。 列のレイアウトが固定されていて、コードパスを最短にしたい場合は、DataTableを直接使用する方法を選択してください。 セルごとに条件付きロジックが必要な場合は、セルごとに手動で処理する方法を選択してください。たとえば、値が許容範囲外のセルを強調表示したり、書き込み前にnull許容型を明示的にマッピングしたりする場合などです。

ダウンロード可能なExcelレポートを生成するASP.NET Coreコントローラーなどのサーバーサイドシナリオにも、同じIronXL APIが適用されます。 唯一の違いは保存先です。SaveAs(filePath) の代わりに、workbook.ToByteArray() を呼び出し、コンテンツタイプが application/vnd.openxmlformats-officedocument.spreadsheetml.sheet の HTTP レスポンスにバイトを書き込みます。 出力先がファイルであろうとストリームであろうと、列ヘッダーは同じように転送されます。

よくある質問

DataGridViewデータをC#でExcelにエクスポートするにはどうしたらいいですか?

IronXLライブラリを使用してExcelワークブックを作成し、DataGridView列を反復処理して行0にヘッダーを書き込み、次にデータ行を反復処理して行1以降のセルの値を書き込みます。SaveAsでワークブックを保存します。

データのエクスポートにIronXLを使用するメリットは何ですか?

IronXLは、Microsoft Officeのインストールを必要としないExcel操作用の高レベルAPIを提供します。手動でXMLを操作することなく、ヘッダー、データ型、ファイル形式を処理できます。

DataGridViewからExcelにエクスポートする際、列のヘッダーを保持することは可能ですか?

はい。データ行を書き込む前に、各 DataGridView 列の HeaderText プロパティを読み取り、 IronXLワークシートの行 0 に書き込みます。

IronXL.Excelエクスポートを使い始めるにはトライアルが必要ですか?

すべての機能にアクセスできる無料トライアルをご利用いただけます。NuGetパッケージをインストールし、トライアルキーを生成し、ライブラリ呼び出しを行う前にIronXl.License.LicenseKeyを設定してください。

IronXLはExcelにエクスポートする際に、大きなDataGridViewデータセットを扱うことができますか?

はい。非常に大きなグリッドの場合は、Task.Run を使用してバックグラウンドスレッドでエクスポートを実行し、 IronXL がデータを書き込む間も UI の応答性を維持します。

IronXLを使ってDataGridViewをExcelにエクスポートする手順を教えてください。

IronXLをインストールし、WorkBook と WorkSheet を作成し、DataGridView 列をループして行 0 にヘッダーを書き込み、行をループして行 1 からデータを書き込み、最後に SaveAs を呼び出してファイルを書き込みます。

なぜ他のExcelエクスポートライブラリではなくIronXLを選ぶのですか?

IronXL はOffice のインストールを必要とせず、サーバー上で実行され、強力なドキュメントとアクティブなサポートを備え、開発者のスプレッドシートに対する考え方に自然にマッピングされるクリーンな WorkBook/WorkSheet API を提供します。

IronXLのトラブルシューティングのサポートはありますか?

はい。IronXLは、ライセンスを取得したお客様に詳細な API ドキュメント、コード例、直接的なエンジニアリング サポートを提供します。

IronXLでExcelエクスポートプロセスをカスタマイズできますか?

はい。データを書き込んだ後、IronXL のスタイル API を使用して、任意のセル範囲に太字フォント、背景色、境界線、数値書式を適用できます。

IronXLはExcel以外のフォーマットへのエクスポートをサポートしていますか?

はい。IronXLはXLSX、XLS、CSV、TSV形式をサポートしています。形式の切り替えは、WorkBook.Createに渡されるExcelFileFormat列挙値を変更するだけで済みます。

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

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

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

アイアンサポートチーム

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