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

C# で GridView を書式付きで Excel にエクスポートする方法

色、フォント、交互の行の背景、境界線を保持しながら GridView データを Excel にエクスポートすることは、ほぼすべてのデータ駆動型ASP.NETまたは Windows フォーム アプリケーションで必要となる要件です。 従来の方法 (HtmlTextWriter および StringWriter を使用してコントロールを HTML としてレンダリングする) では、Excel で形式の警告が発生し、ユーザーに対しては何も表示されずに失敗するファイルが生成されます。 IronXL は、Microsoft Office に依存せずに完全に C# でネイティブ XLSX ファイルを生成することでこの問題を解決し、すべてのセル スタイルを正確に制御できるようにします。

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

エクスポート コードを書く前に、 NuGetからIronXLをインストールします。 パッケージマネージャーコンソールを開いて次を実行します:

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

IronXL は、.NET 8、 .NET 9、 .NET 10 に加え、 .NET Framework 4.6.2 以降をサポートしています。 インストール後、Excel 操作を実行するすべてのファイルに次の using ディレクティブを追加します。

using IronXL;
using IronXl.Styles;
using IronXL;
using IronXl.Styles;
$vbLabelText   $csharpLabel

追加のランタイムや Office 相互運用性は必要ありません。 このライブラリは、Microsoft Excel、LibreOffice Calc、Google Sheets できれいに開くネイティブ XLSX バイナリ ファイルを書き込みます。

セルの書式設定を含む Windows フォーム DataGridView を Excel にエクスポートするにはどうすればよいですか?

Windows フォーム アプリケーションでは、Web ベースの GridView ではなく、DataGridView コントロールが使用されます。 どちらの場合もエクスポート パターンは同じです。行とセルから値を抽出し、IronXL ワークブックを作成し、スタイルを適用して、結果を保存またはストリーミングします。

最も信頼性の高い方法は、コントロールの DataSource プロパティを DataTable にキャストして、フィルター処理またはページングされる可能性のあるビジュアル行の反復処理を回避することです。

using IronXL;
using IronXl.Styles;
using System;
using System.Data;
using System.IO;
using System.Windows.Forms;

DataTable dt = (DataTable)dataGridView1.DataSource;

WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workBook.DefaultWorkSheet;

// Header row -- bold, blue background, white text
for (int col = 0; col < dt.Columns.Count; col++)
{
    sheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
    var cell = sheet.GetCellAt(0, col);
    cell.Style.Font.Bold = true;
    cell.Style.SetBackgroundColor("#4472C4");
    cell.Style.Font.Color = "#FFFFFF";
    cell.Style.BottomBorder.Type = BorderType.Thin;
}

// Data rows -- alternating row color
for (int row = 0; row < dt.Rows.Count; row++)
{
    for (int col = 0; col < dt.Columns.Count; col++)
    {
        string value = dt.Rows[row][col]?.ToString() ?? string.Empty;
        sheet.SetCellValue(row + 1, col, value);

        var cell = sheet.GetCellAt(row + 1, col);
        cell.Style.SetBackgroundColor(row % 2 == 0 ? "#D6DCE5" : "#FFFFFF");
        cell.Style.BottomBorder.Type = BorderType.Thin;
    }
}

// Save via dialog
using var saveDialog = new SaveFileDialog
{
    Filter = "Excel Files|*.xlsx",
    FileName = "GridViewExport.xlsx"
};

if (saveDialog.ShowDialog() == DialogResult.OK)
{
    workBook.SaveAs(saveDialog.FileName);
    MessageBox.Show("Export successful.", "Export",
        MessageBoxButtons.OK, MessageBoxIcon.Information);
}
using IronXL;
using IronXl.Styles;
using System;
using System.Data;
using System.IO;
using System.Windows.Forms;

DataTable dt = (DataTable)dataGridView1.DataSource;

WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workBook.DefaultWorkSheet;

// Header row -- bold, blue background, white text
for (int col = 0; col < dt.Columns.Count; col++)
{
    sheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
    var cell = sheet.GetCellAt(0, col);
    cell.Style.Font.Bold = true;
    cell.Style.SetBackgroundColor("#4472C4");
    cell.Style.Font.Color = "#FFFFFF";
    cell.Style.BottomBorder.Type = BorderType.Thin;
}

// Data rows -- alternating row color
for (int row = 0; row < dt.Rows.Count; row++)
{
    for (int col = 0; col < dt.Columns.Count; col++)
    {
        string value = dt.Rows[row][col]?.ToString() ?? string.Empty;
        sheet.SetCellValue(row + 1, col, value);

        var cell = sheet.GetCellAt(row + 1, col);
        cell.Style.SetBackgroundColor(row % 2 == 0 ? "#D6DCE5" : "#FFFFFF");
        cell.Style.BottomBorder.Type = BorderType.Thin;
    }
}

// Save via dialog
using var saveDialog = new SaveFileDialog
{
    Filter = "Excel Files|*.xlsx",
    FileName = "GridViewExport.xlsx"
};

if (saveDialog.ShowDialog() == DialogResult.OK)
{
    workBook.SaveAs(saveDialog.FileName);
    MessageBox.Show("Export successful.", "Export",
        MessageBoxButtons.OK, MessageBoxIcon.Information);
}
$vbLabelText   $csharpLabel

WorkBook.Create は、XLSX 形式で新しいメモリ内ワークブックを初期化します。 DefaultWorkSheet は最初のシートを返します。保存する前に、Name プロパティを使用して名前を変更できます。 SetCellValue は文字列、整数、倍精度浮動小数点数、および DateTime 値を受け入れます -- IronXL は正しいセル タイプを自動的に選択します。

交互の行の色のパターン (row % 2 == 0#D6DCE5 を選択し、それ以外の場合は #FFFFFF) は、Excel に組み込まれている縞模様の行のテーブル スタイルを反映します。 アプリケーションのデザイン システムに一致する任意の 6 文字の 16 進色を代用できます。

出力画像

 IronXLを使用して C# で GridView を Excel にフォーマットしてエクスポートする: 画像 1 - GridView 出力

 IronXLを使用して C# で GridView を Excel にフォーマットしてエクスポートする: 画像 2 - Excel 出力

 IronXLを使用して C# で GridView を Excel にフォーマットしてエクスポートする: 画像 3 - メッセージ出力

ASP.NET GridView を Excel にエクスポートし、そのファイルをブラウザーにストリーミングするにはどうすればよいですか?

Web アプリケーションには異なる配信メカニズムが必要です。 ファイル システムに書き込む代わりに、ワークブックを MemoryStream にシリアル化し、正しいヘッダーを使用して HTTP 応答に書き込みます。これにより、ブラウザーはそれをファイルのダウンロードとして扱います。

ページ分割された GridView の重要な事前手順: ページングを無効にし (AllowPaging = false)、エクスポート前にデータ ソースを再バインドして、現在のページだけでなくすべてのレコードがキャプチャされるようにします。

using IronXL;
using IronXl.Styles;
using System;
using System.Data;
using System.IO;
using System.Web.UI;

// Disable paging so all rows are captured
GridView1.AllowPaging = false;
GridView1.DataBind();

DataTable dt = (DataTable)GridView1.DataSource;

WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workBook.DefaultWorkSheet;

// Header row
for (int col = 0; col < dt.Columns.Count; col++)
{
    sheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
    var cell = sheet.GetCellAt(0, col);
    cell.Style.Font.Bold = true;
    cell.Style.SetBackgroundColor("#2E75B6");
    cell.Style.Font.Color = "#FFFFFF";
    cell.Style.HorizontalAlignment = HorizontalAlignment.Center;
    cell.Style.BottomBorder.Type = BorderType.Medium;
}

// Data rows
for (int row = 0; row < dt.Rows.Count; row++)
{
    for (int col = 0; col < dt.Columns.Count; col++)
    {
        sheet.SetCellValue(row + 1, col, dt.Rows[row][col]?.ToString() ?? string.Empty);
        var cell = sheet.GetCellAt(row + 1, col);
        cell.Style.SetBackgroundColor(row % 2 == 0 ? "#DEEAF1" : "#FFFFFF");
        cell.Style.BottomBorder.Type = BorderType.Thin;
        cell.Style.LeftBorder.Type = BorderType.Thin;
        cell.Style.RightBorder.Type = BorderType.Thin;
    }
}

// Stream to browser
byte[] fileBytes = workBook.ToByteArray();
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment; filename=GridViewExport.xlsx");
Response.BinaryWrite(fileBytes);
Response.End();
using IronXL;
using IronXl.Styles;
using System;
using System.Data;
using System.IO;
using System.Web.UI;

// Disable paging so all rows are captured
GridView1.AllowPaging = false;
GridView1.DataBind();

DataTable dt = (DataTable)GridView1.DataSource;

WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workBook.DefaultWorkSheet;

// Header row
for (int col = 0; col < dt.Columns.Count; col++)
{
    sheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
    var cell = sheet.GetCellAt(0, col);
    cell.Style.Font.Bold = true;
    cell.Style.SetBackgroundColor("#2E75B6");
    cell.Style.Font.Color = "#FFFFFF";
    cell.Style.HorizontalAlignment = HorizontalAlignment.Center;
    cell.Style.BottomBorder.Type = BorderType.Medium;
}

// Data rows
for (int row = 0; row < dt.Rows.Count; row++)
{
    for (int col = 0; col < dt.Columns.Count; col++)
    {
        sheet.SetCellValue(row + 1, col, dt.Rows[row][col]?.ToString() ?? string.Empty);
        var cell = sheet.GetCellAt(row + 1, col);
        cell.Style.SetBackgroundColor(row % 2 == 0 ? "#DEEAF1" : "#FFFFFF");
        cell.Style.BottomBorder.Type = BorderType.Thin;
        cell.Style.LeftBorder.Type = BorderType.Thin;
        cell.Style.RightBorder.Type = BorderType.Thin;
    }
}

// Stream to browser
byte[] fileBytes = workBook.ToByteArray();
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment; filename=GridViewExport.xlsx");
Response.BinaryWrite(fileBytes);
Response.End();
$vbLabelText   $csharpLabel

Response.AddHeadercontent-disposition: attachment を組み合わせると、すべての最新ブラウザでファイルのダウンロード ダイアログが強制表示されます。 MIME タイプ application/vnd.openxmlformats-officedocument.spreadsheetml.sheet は XLSX ファイルの登録タイプであり、ブラウザがバイナリ コンテンツをインラインで表示することを防ぎます。

ASP.NET Coreアプリケーションの場合、コントローラー アクションで Response.BinaryWriteFile(fileBytes, contentType, fileName) に置き換えます。ワークブックの作成ロジックは同じです。

セルの値に基づいて条件付き書式を適用するにはどうすればよいですか?

条件付き書式は、特定の条件を満たすセルを強調表示します。たとえば、期限切れの日付を赤でマークしたり、しきい値を下回る値をオレンジ色でフラグ付けしたりします。 IronXL は、ワークブックの構築中にセル レベルで条件付き書式を適用します。

// Assume "DueDate" is column index 3 and "Amount" is column index 4
DateTime today = DateTime.Today;

for (int row = 0; row < dt.Rows.Count; row++)
{
    // Highlight past-due dates
    if (dt.Columns.Contains("DueDate") && dt.Rows[row]["DueDate"] != DBNull.Value)
    {
        DateTime dueDate = Convert.ToDateTime(dt.Rows[row]["DueDate"]);
        var dueDateCell = sheet.GetCellAt(row + 1, 3);
        if (dueDate < today)
        {
            dueDateCell.Style.SetBackgroundColor("#FF0000");
            dueDateCell.Style.Font.Color = "#FFFFFF";
            dueDateCell.Style.Font.Bold = true;
        }
    }

    // Highlight amounts below threshold
    if (dt.Columns.Contains("Amount") && dt.Rows[row]["Amount"] != DBNull.Value)
    {
        decimal amount = Convert.ToDecimal(dt.Rows[row]["Amount"]);
        var amountCell = sheet.GetCellAt(row + 1, 4);
        if (amount < 100m)
        {
            amountCell.Style.SetBackgroundColor("#FFC000");
        }
    }
}
// Assume "DueDate" is column index 3 and "Amount" is column index 4
DateTime today = DateTime.Today;

for (int row = 0; row < dt.Rows.Count; row++)
{
    // Highlight past-due dates
    if (dt.Columns.Contains("DueDate") && dt.Rows[row]["DueDate"] != DBNull.Value)
    {
        DateTime dueDate = Convert.ToDateTime(dt.Rows[row]["DueDate"]);
        var dueDateCell = sheet.GetCellAt(row + 1, 3);
        if (dueDate < today)
        {
            dueDateCell.Style.SetBackgroundColor("#FF0000");
            dueDateCell.Style.Font.Color = "#FFFFFF";
            dueDateCell.Style.Font.Bold = true;
        }
    }

    // Highlight amounts below threshold
    if (dt.Columns.Contains("Amount") && dt.Rows[row]["Amount"] != DBNull.Value)
    {
        decimal amount = Convert.ToDecimal(dt.Rows[row]["Amount"]);
        var amountCell = sheet.GetCellAt(row + 1, 4);
        if (amount < 100m)
        {
            amountCell.Style.SetBackgroundColor("#FFC000");
        }
    }
}
$vbLabelText   $csharpLabel

このパターンは構成可能であり、レポート要件に応じて任意の数の条件チェックを追加できます。 IronXL はセルごとに動作するため、基本行スタイルの後に条件付きスタイルを適用することで、条件付き書式と交互行色ロジックを組み合わせることができます。

列幅を設定し、ヘッダー行を固定するにはどうすればよいでしょうか?

専門的にフォーマットされた Excel エクスポートには、適切な列幅と固定されたヘッダー行が含まれており、ユーザーが大規模なデータセットをスクロールしても列名が表示されたままになります。

IronXL は、列幅を WorkSheet 列アクセサを通じて公開し、ヘッダーを FreezeRows メソッドを通じて固定します。

// Auto-size columns 0 through the last column index
for (int col = 0; col < dt.Columns.Count; col++)
{
    // Set column width in character units (1 unit ≈ one default character width)
    sheet.SetColumnWidth(col, 20);
}

// Freeze the first row (index 0) so the header stays visible while scrolling
sheet.FreezeRows(1);

// Optionally set row height for the header (in points)
sheet.SetRowHeight(0, 20);
// Auto-size columns 0 through the last column index
for (int col = 0; col < dt.Columns.Count; col++)
{
    // Set column width in character units (1 unit ≈ one default character width)
    sheet.SetColumnWidth(col, 20);
}

// Freeze the first row (index 0) so the header stays visible while scrolling
sheet.FreezeRows(1);

// Optionally set row height for the header (in points)
sheet.SetRowHeight(0, 20);
$vbLabelText   $csharpLabel

実稼働環境で使用する場合は、固定値を使用するのではなく、各列の最大文字数に基づいて幅を計算することを検討してください。 DataTable 列の値を反復処理し、文字列の長さを測定し、選択したフォント サイズに適した文字幅係数を掛けます。

よりきめ細かなスタイル設定のアプローチとして、行バンドのロジックとは独立してC# を使用して Excel セルに背景色を適用することもできます。

GridView コントロールなしで DataTable を Excel にエクスポートするにはどうすればよいですか?

多く for .NETアプリケーションは、サービス呼び出しまたはデータベース クエリを通じてデータを入力し、それを UI コントロールにバインドすることなく DataTable に保持します。 GridView をインスタンス化せずに、DataTable を Excel に直接エクスポートできます。

これは、サーバー上で Excel ファイルを生成する必要があるバックグラウンド ジョブ、スケジュールされたレポート、および API エンドポイントにとって最も効率的なパスです。

using IronXL;
using IronXl.Styles;
using System.Data;

public static byte[] DataTableToExcelBytes(DataTable dt, string sheetName = "Report")
{
    WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet sheet = workBook.CreateWorkSheet(sheetName);

    // Header
    for (int col = 0; col < dt.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
        var cell = sheet.GetCellAt(0, col);
        cell.Style.Font.Bold = true;
        cell.Style.SetBackgroundColor("#4472C4");
        cell.Style.Font.Color = "#FFFFFF";
    }

    // Data
    for (int row = 0; row < dt.Rows.Count; row++)
    {
        for (int col = 0; col < dt.Columns.Count; col++)
        {
            sheet.SetCellValue(row + 1, col, dt.Rows[row][col]?.ToString() ?? string.Empty);
        }
    }

    return workBook.ToByteArray();
}
using IronXL;
using IronXl.Styles;
using System.Data;

public static byte[] DataTableToExcelBytes(DataTable dt, string sheetName = "Report")
{
    WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet sheet = workBook.CreateWorkSheet(sheetName);

    // Header
    for (int col = 0; col < dt.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
        var cell = sheet.GetCellAt(0, col);
        cell.Style.Font.Bold = true;
        cell.Style.SetBackgroundColor("#4472C4");
        cell.Style.Font.Color = "#FFFFFF";
    }

    // Data
    for (int row = 0; row < dt.Rows.Count; row++)
    {
        for (int col = 0; col < dt.Columns.Count; col++)
        {
            sheet.SetCellValue(row + 1, col, dt.Rows[row][col]?.ToString() ?? string.Empty);
        }
    }

    return workBook.ToByteArray();
}
$vbLabelText   $csharpLabel

このメソッドは、ディスクに書き込んだり、API エンドポイントからストリーミングしたり、電子メールに添付したり、メモリにキャッシュしたりできる byte[] を返します。 関連するテクニックについては、 DataTable を Excel にエクスポートするガイドと、 DataTable を Excel にエクスポートする最も速い方法に関するチュートリアルを参照してください。

大規模なデータセットとパフォーマンスをどのように処理しますか?

数万行を Excel にエクスポートする場合は、メモリの割り当てに注意する必要があります。 大規模なグリッド内のすべてのセルに対して新しいセル スタイル オブジェクトを作成することが、最も一般的なパフォーマンスのボトルネックになります。 個々のセルではなく範囲オブジェクトにスタイルを設定することで、可能な場合はスタイル定義を再利用します。

データセットサイズ別のIronXLエクスポートアプローチ
データセットのサイズ 推奨されるアプローチ 重要な考慮事項
最大5,000行 セルごとのスタイリングループ シンプルなコード、無視できるオーバーヘッド
5,000 - 50,000行 範囲レベルスタイルのアプリケーション オブジェクトの割り当てを大幅に削減
50,000行以上 DataTable の直接エクスポート、最小限のスタイル セルごとの操作を最小限に抑え、可能な場合はストリーミングを使用する

ページ分割された GridView の場合は、エクスポートする前に必ず AllowPaging = false を設定し、再バインドしてください。 ページングによりコントロール内に表示される行数が制限されるため、ページングされたエクスポートではデータセット全体ではなく現在のページのみがキャプチャされます。これが不完全なエクスポートのバグの頻繁な原因となります。

型指定されていない行ではなく、厳密に型指定されたコレクションで機能するパターンについては、C# でオブジェクトのリストを Excel にエクスポートする方法についてのガイドを確認することもできます。

ASP.NET CoreまたはBlazorで GridView をエクスポートするにはどうすればよいですか?

ASP.NET CoreアプリケーションとBlazorアプリケーションには Web フォーム コントロールはありませんが、データエクスポートの基本的な課題は同じです。つまり、オブジェクトのコレクションまたは CODE-959--@@ を取得し、スタイル設定されたワークブックを構築して、ファイルを出力します。ワークブック作成コードは同じです。 配信メカニズムのみが変わります。

Blazorアプリケーションで、 JavaScript相互運用機能を通じてファイルのダウンロードをトリガーします。

// In a Blazor component or service
using IronXL;
using System.Data;
using Microsoft.JSInterop;

public async Task ExportToExcelAsync(DataTable dt, IJSRuntime js)
{
    WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet sheet = workBook.DefaultWorkSheet;

    for (int col = 0; col < dt.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
        var cell = sheet.GetCellAt(0, col);
        cell.Style.Font.Bold = true;
        cell.Style.SetBackgroundColor("#4472C4");
        cell.Style.Font.Color = "#FFFFFF";
    }

    for (int row = 0; row < dt.Rows.Count; row++)
    {
        for (int col = 0; col < dt.Columns.Count; col++)
        {
            sheet.SetCellValue(row + 1, col, dt.Rows[row][col]?.ToString() ?? string.Empty);
        }
    }

    byte[] fileBytes = workBook.ToByteArray();
    string base64 = Convert.ToBase64String(fileBytes);
    await js.InvokeVoidAsync("downloadFileFromBase64", base64, "GridViewExport.xlsx",
        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
}
// In a Blazor component or service
using IronXL;
using System.Data;
using Microsoft.JSInterop;

public async Task ExportToExcelAsync(DataTable dt, IJSRuntime js)
{
    WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet sheet = workBook.DefaultWorkSheet;

    for (int col = 0; col < dt.Columns.Count; col++)
    {
        sheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
        var cell = sheet.GetCellAt(0, col);
        cell.Style.Font.Bold = true;
        cell.Style.SetBackgroundColor("#4472C4");
        cell.Style.Font.Color = "#FFFFFF";
    }

    for (int row = 0; row < dt.Rows.Count; row++)
    {
        for (int col = 0; col < dt.Columns.Count; col++)
        {
            sheet.SetCellValue(row + 1, col, dt.Rows[row][col]?.ToString() ?? string.Empty);
        }
    }

    byte[] fileBytes = workBook.ToByteArray();
    string base64 = Convert.ToBase64String(fileBytes);
    await js.InvokeVoidAsync("downloadFileFromBase64", base64, "GridViewExport.xlsx",
        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
}
$vbLabelText   $csharpLabel

Blazorダウンロード パターンの完全なウォークスルーについては、 Blazorから Excel へのエクスポートのチュートリアルをご覧ください。 ASP.NET Coreコントローラー アプローチについては、 ASP.NET Coreエクスポート Excel チュートリアルを参照してください。

フォントスタイルと境界線のオプション

IronXL は、各セルの Style オブジェクトを通じて、きめ細かなフォントと境界線のコントロールを公開します。 C# の Excel フォント スタイルの全範囲には、太字、斜体、下線、サイズ、色が含まれます。 BorderType を通じて使用できる境界線の種類には、細い線、中くらいの線、太い線、破線、点線、二重線、およびいくつかの細い線のバリエーションが含まれます。

結合されたヘッダー行またはサマリー フッターの場合、 IronXL はC# を使用して Excel のセル結合もサポートします。これは、データ テーブルの上に複数の列にまたがる単一のタイトル セルが必要な場合に便利です。

データを入力した後に列幅を自動調整するには、推奨される方法については、C# を使用した Excel のセルの自動調整ガイドを参照してください。

ネイティブ Excel ライブラリが HtmlTextWriter よりもクリーンなエクスポートを生成するのはなぜですか?

従来のASP.NETエクスポート手法 (VerifyRenderingInServerForm をオーバーライドし、StringWriterHtmlTextWriter を作成し、レンダリングされたコントロールを応答に書き込む) では、.xls 拡張子を持つ HTML ドキュメントが生成されます。 Microsoft Excel では、ファイルが実際には Excel バイナリまたは OOXML 形式ではないため、このようなファイルは互換性の警告とともに開かれます。 スタイルは、Excel が部分的に解釈するインライン CSS に制限されます。 条件付き書式は不可能です。 Windows 以外のプラットフォームを使用しているユーザーや LibreOffice を使用しているユーザーには、品質の低い出力が表示されます。

IronXL はOpen XML スプレッドシート形式 (OOXML) を直接書き込みます。 結果は適切な .xlsx ファイル (Excel 自体が作成するものと同一) であり、macOS 上の Excel、LibreOffice、Google Sheets、Numbers で警告なしで開きます。 書式設定は HTML 属性ではなくスプレッドシート スタイルとしてエンコードされるため、ラウンドトリップやクロスプラットフォームの表示でも維持されます。

ASP.NET GridView のエクスポート方法の比較
方法 ファイル形式 フォーマットの警告 フルスタイルサポート オフィス必須
HtmlTextWriter + StringWriter XLS を装った HTML はい なし なし
オフィス相互運用性 (COM) ネイティブ XLS/XLSX なし はい はい
IronXL ネイティブXLSX/XLS なし はい なし

Open XML SDKに関する Microsoft の公式ドキュメントでは、 IronXL が生成する基礎となる形式について説明しています。 ECMA International によって管理されている OOXML 仕様は、アプリケーション間の互換性を保証する標準を定義します。 Microsoft Docs のASP.NET GridView コントロールのドキュメントでは、上記のエクスポート パターンが読み取るコントロール モデルについて説明しています。

次のステップは何ですか?

これで、Windows フォーム、 ASP.NET Web フォーム、 ASP.NET Core、およびBlazor配信モデルをカバーし、 IronXLを使用して GridView および DataGridView データを適切にフォーマットされた XLSX ファイルにエクスポートするために必要なパターンが手に入りました。

さらに進むには:

よくある質問

C# で GridView データを Excel にエクスポートするにはどうすればよいですか?

IronXLライブラリを使用すると、C#でGridViewデータをExcelにエクスポートできます。プログラムでExcelファイルを作成し、書式設定やスタイルを含めたデータを簡単にエクスポートできます。

GridView データをエクスポートするのにIronXLを使用する必要があるのはなぜですか?

IronXL は直感的な API を使用して GridView データのエクスポート プロセスを簡素化し、従来の方法では困難だった書式設定の維持やスタイルの適用を簡単に実行できるようにします。

IronXL は、GridView を Excel にエクスポートする際の書式設定をサポートしていますか?

はい、 IronXL はフォント、色、セル スタイルなどのさまざまな書式設定オプションをサポートしており、エクスポートされた Excel ファイルがプロフェッショナルな外観になり、意図したデザインが維持されます。

GridView データから生成された Excel ファイルの外観をカスタマイズできますか?

IronXL はExcel ファイル用のさまざまなカスタマイズ オプションを提供しており、GridView からエクスポートするときに、特定の要件に合わせてセルのスタイル、フォント、色などを調整できます。

IronXLを使用して大規模な GridView データセットを Excel にエクスポートすることは可能ですか?

IronXLは大規模なデータセットを効率的に処理できるため、パフォーマンスの問題が発生することなく、広範な GridView データを Excel にエクスポートできます。

他の方法と比べて、 IronXLを使用して GridView データを Excel にエクスポートする利点は何ですか?

IronXL は、GridView データをエクスポートするためのより合理的で柔軟なアプローチを提供し、フォーマット、カスタマイズ、大規模なデータセットの処理に対する強力なサポートを提供するため、他の多くの方法よりも優れています。

GridView を Excel にエクスポートするときにデータの整合性を維持するにはどうすればよいですか?

IronXL は、GridView から Excel へのエクスポート プロセス中にデータの種類と形式を正確に変換および保持することで、データの整合性を保証します。

IronXL は複雑な構造の GridView コントロールからデータをエクスポートできますか?

はい、 IronXL は、複雑な構造を持つ GridView コントロールからデータを効果的に処理してエクスポートし、結果の Excel ファイルで階層と書式を維持できます。

IronXL はGridView データをどのようなファイル形式でエクスポートできますか?

IronXL は主に XLSX などの Excel 形式にデータをエクスポートしますが、CSV などの他の形式もサポートしているため、ニーズに応じて柔軟に対応できます。

IronXLを使用して条件付き書式で GridView をエクスポートすることはサポートされていますか?

IronXL は条件付き書式をサポートしており、GridView データを Excel にエクスポートするときにセルの値に基づいて動的に調整されるルールとスタイルを設定できます。

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

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

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

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me