IRONSOFTWAREHOME
IRONXLの使用

ASP.NET C#でExcelをGridViewにインポートする方法

Curtis Chau
Curtis Chau
Updated: 2026年6月28日

IronXLを使えば、ExcelデータをASP.NET C#のGridViewに簡単にインポートできます。 ワークブックをロードし、ワークシートをGridViewコントロールにバインドします。すべてOLEDBドライバーや複雑な接続文字列なしで行います。

ぜひご自身でお試しください。IronXL の無料トライアル版を入手して、以下のコード例を試してみてください。

Excel GridViewとの連携のためにIronXLをインストールするにはどうすればよいですか?

コードを記述する前に、 ASP.NETプロジェクトにIronXLを追加する必要があります。 最も手っ取り早い方法は、Visual Studio パッケージ マネージャー コンソールまたは.NET CLI からNuGet を使用することです。

PM > Install-Package IronXL.Excel

NuGetをインストールすると、プロジェクトに必要なすべての参照が追加されます。 外部ドライバのインストールは不要で、OLEDBプロバイダの登録も不要、サーバーへのMicrosoft Officeの依存関係もありません。 このライブラリは単一のマネージドアセンブリとして提供され、Windows、Linux、macOS、およびAzure App Serviceを含むクラウドホスティング環境で動作します。

インストール後、Excelデータの読み書きを行うコードビハインドファイルに、以下の名前空間を追加してください。

using IronXL;
using System.Data;
using System.IO;

IronXLは.xls(Excel 97-2003)および.xlsx(Excel 2007+)フォーマットの両方をサポートするため、各ファイルタイプを個別に処理する必要はありません。 ファイルシグネチャを自動的に確認することで、同じWorkBook.Load呼び出しがどちらのフォーマットも処理します。

GridViewのデータバインディングにOLEDBを使用しない理由とは?

従来のOLEDBベースのExcelインポートには、Microsoft Accessデータベースエンジン(ACEまたはJET)が必要であり、これはサーバーに適切なビット数(32ビットまたは64ビット)でインストールされている必要があります。 異なるサーバー環境への展開は、ドライバーが不足しているか、互換性がないために失敗することがよくあります。また、マイクロソフトは64ビット版ACEドライバーをWindowsにデフォルトで同梱しなくなりました。

IronXLは、その依存関係を完全に解消します。 マネージドコード内で、Open XMLまたはBIFF形式の生データを直接読み込みます。 開発環境、ステージング環境、本番環境において、ドライバのバージョンを気にすることなく、予測可能な動作が得られます。

IronXLはど for .NETプラットフォームを対象としていますか?

IronXLは、.NET 10、 .NET 8、 .NET Standard 2.0、および.NET Framework 4.6.2以降を対象としています。 この互換性により、Excel処理レイヤーのコードを変更することなく、 ASP.NETアプリケーションが従来のWebフォーム、 ASP.NET MVC、または最新のASP.NET Core Razor Pagesのいずれで実行されていても、同じライブラリを使用できます。 IronXLパッケージはNuGetで入手できます。インストール前にバージョン履歴やリリースノートを確認してください。

ExcelデータをGridViewに読み込む最速の方法は何ですか?

最も高速な方法はGridView.DataBindを約4行の効果的なコードに統合します。 基本的なシナリオでは、手動での列作成や行の反復処理は不要です。

using IronXL;
using System.Data;

WorkBook workBook = WorkBook.Load("data.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;

// true = treat first row as column headers
DataTable dataTable = sheet.ToDataTable(true);

GridView1.DataSource = dataTable;
GridView1.DataBind();

DataTable内の列名に昇格させるよう指示します。 そのテーブルをGridViewにバインドすると、ASP.NETはExcelヘッダーごとに自動的に1つの列を作成します。

ToDataTableは、異なるデータ型の混在をどのように処理しますか?

stringとして保存されます。 アプリケーションが型指定列を必要とする場合、例えば価格データのDataTableを作成する前に適切な.NET型にキャストします。

単純な表示には、GridView内で文字列列があれば十分です。なぜなら、グリッドはすべての値をテキストとしてレンダリングするためです。

ExcelファイルをインポートするためのASP.NET Webフォームページを作成するにはどうすればよいですか?

最小限のインポートページには、ファイルアップロード入力、送信ボタン、GridViewの3つのコントロールが必要です。 次のASPXマークアップを<form runat="server">要素内に追加してください。

<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="btnUpload" runat="server" Text="Upload Excel File"
    OnClick="btnUpload_Click" />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true"
    CssClass="table table-bordered" />

CssClass属性は、Bootstrapスタイルシートを使用している場合にグリッドをそのスタイルシートに接続し、追加の設定なく装飾された行とボーダーを提供します。

コードビハインドで、ボタンのクリックイベントを処理します。 以下のパターンにより、アップロードされたファイルを一時サーバーパスに保存し、それをIronXLでロードし、結果のDataTableをグリッドにバインドします。

using IronXL;
using System.Data;
using System.IO;

void btnUpload_Click(object sender, EventArgs e)
{
    if (!FileUpload1.HasFile) return;

    string uploadDir = Server.MapPath("~/Uploads/");
    Directory.CreateDirectory(uploadDir); // ensure directory exists

    string filePath = Path.Combine(uploadDir, Path.GetFileName(FileUpload1.FileName));
    FileUpload1.SaveAs(filePath);

    WorkBook workBook = WorkBook.Load(filePath);
    WorkSheet sheet = workBook.DefaultWorkSheet;
    DataTable dt = sheet.ToDataTable(true);

    GridView1.DataSource = dt;
    GridView1.DataBind();

    // Store for later export operations
    Session["CurrentData"] = dt;
}

この実装では、イベントハンドラ内のロジックにトップレベルのステートメントスタイルを採用しつつ、必要なWebフォームイベントのシグネチャを維持しています。 Uploadsフォルダーが存在する場合、その呼び出しは無操作です。

ASP.NET C#でIronXLを使用してExcelをGridViewにインポート:アップロードされたスプレッドシートデータがGridViewコントロールにレンダリングされます

ユーザーが.xlsxファイルを選択してアップロードボタンをクリックした後、グリッドはスプレッドシートの内容で埋められます。 列名はExcelファイルの最初の行から取得され、それ以降の行はすべてグリッド内のデータ行になります。

アップロードされたファイルをどのように検証すべきですか?

実運用においては、処理前にファイル拡張子とMIMEタイプを確認する必要があります。 IronXLはサポートされていないファイル形式に対して例外をスローしますが、ファイルシステムに手を加える前に、コントローラーレベルで不正なアップロードを拒否する方が良いでしょう。

string ext = Path.GetExtension(FileUpload1.FileName).ToLowerInvariant();
string[] allowed = { ".xls", ".xlsx" };

if (!allowed.Contains(ext))
{
    lblError.Text = "Only .xls and .xlsx files are accepted.";
    return;
}

IISのリクエスト制限やSaveAsを呼び出す前に最大ファイルサイズを強制する必要があります。

特定のワークシートやセル範囲にアクセスするにはどうすればよいですか?

Excelワークブックに複数のシートが含まれる場合、DefaultWorkSheetに頼るのではなく、名前で特定のシートをターゲットにする必要があります。 IronXLは、シートタブ名を文字列として受け取るGetWorkSheetメソッドを提供します。

using IronXL;
using System.Data;

WorkBook workBook = WorkBook.Load("sales-report.xlsx");

// Access a named sheet
WorkSheet salesSheet = workBook.GetWorkSheet("Q4 Sales");

// Read a specific cell range
var topTen = salesSheet["A1:E11"];

// Convert the entire workbook to a DataSet (one DataTable per sheet)
DataSet allSheets = workBook.ToDataSet();

// Bind the first sheet's DataTable to the grid
GridView1.DataSource = allSheets.Tables[0];
GridView1.DataBind();

アプリケーションが複数のシートからデータを表示する必要がある場合やユーザーが表示するシートを選択する場合、ToDataSetメソッドは便利です。 返されたDataTableは1つのExcelワークシートに対応し、テーブル名はシートタブ名と一致します。

ASP.NET C#でIronXLを使用してExcelをGridViewにインポート:名前付きワークシートデータがGridViewにバインドされています

GridViewにバインドする前に、行をフィルタリングするにはどうすればよいですか?

Excel行のサブセットのみを取得したい場合、例えば、"Status"列が"Active"と等しい行、DataViewフィルターを適用し、フィルターされたビューをグリッドにバインドします:

DataTable dt = sheet.ToDataTable(true);
DataView dv = new DataView(dt)
{
    RowFilter = "Status = 'Active'"
};

GridView1.DataSource = dv;
GridView1.DataBind();

DataView.RowFilterは標準SQLのWHERE句構文を受け入れます。同じ表現言語はMicrosoft LearnのDataColumn.Expressionプロパティに文書化されており、データベースを読み込むことなくソートとフィルタリングを提供します。

Excel GridViewのバインディングにおけるインポート方法を比較するにはどうすればよいですか?

ExcelからGridViewへのデータバインディングには、それぞれ異なるアプローチがあり、それぞれにメリットとデメリットがあります。 以下の表は、最も一般的な方法をまとめたものです。ご自身の状況に最適な方法を選択してください。

ASP.NET GridView バインディングにおける Excel インポート方法の比較
方法運転手必須XLS サポートXLSXサポートサーバー依存性コードの複雑さ
IronXL (ToDataTable)なしneはいはいなしne低い
OLEDB / JETACE/JETエンジンはい部分的32/64ビットドライバ高い
Open XML SDKなしneなしはいなしne高い
EPPlusなしneなしはいなし(制作には商用ライセンスが必要)中くらい

IronXLは、従来のXLS形式と最新のXLSX形式の両方に対応しており、サーバー側のドライバのインストールは不要で、挙げられているオプションの中で最もコードの複雑さが低い。 IronPDFIronOCRなど、他のIron Software製品を既に利用しているチームの場合、1つのIron SoftwareライセンスでSuite全体をカバーできます。

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

IronXLを使えば、Excelからグリッドへ、そして再びExcelへと戻るという往復作業も同様に簡潔に行えます。 このパターンは、ユーザーがグリッドに現在表示されている内容をエクスポートできる"Excelとしてダウンロード"ボタンに役立ちます。

void btnExport_Click(object sender, EventArgs e)
{
    DataTable dt = Session["CurrentData"] as DataTable;
    if (dt == null) return;

    WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
    WorkSheet ws = workBook.CreateWorkSheet("Export");

    // Write header row
    for (int col = 0; col < dt.Columns.Count; col++)
        ws.SetCellValue(0, col, dt.Columns[col].ColumnName);

    // Write data rows
    for (int row = 0; row < dt.Rows.Count; row++)
        for (int col = 0; col < dt.Columns.Count; col++)
            ws.SetCellValue(row + 1, col, dt.Rows[row][col]?.ToString() ?? string.Empty);

    string exportDir = Server.MapPath("~/Exports/");
    Directory.CreateDirectory(exportDir);
    string exportPath = Path.Combine(exportDir, "export.xlsx");
    workBook.SaveAs(exportPath);

    Response.Clear();
    Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
    Response.AddHeader("Content-Disposition", "attachment; filename=export.xlsx");
    Response.TransmitFile(exportPath);
    Response.End();
}

Response.TransmitFile呼び出しは、保存されたファイルをブラウザにストリーミングし、ダウンロードダイアログをトリガーします。 Content-Disposition: attachmentヘッダーは、ブラウザがファイルをインラインで表示しようとするのではなく、ダウンロードすることを保証します。

ASP.NET C#でIronXLを使用してExcelをGridViewにインポート:データテーブルがExcelファイルにエクスポートされます

IronXLのエクスポートにおける一般的なフォーマットオプションにはどのようなものがありますか?

IronXL、生データだけでなく、保存前にセルの書式設定を適用することもできます。 見出しの太字化、列幅、数値形式、背景色などを設定できます。

// Bold the header row
ws["A1:Z1"].Style.Font.Bold = true;

// Apply a currency format to column C (index 2), rows 2 onward
ws[$"C2:C{dt.Rows.Count + 1}"].FormatString = IronXL.Styles.BuiltinFormats.Accounting2;

// Auto-fit column widths (IronXL approximates based on content length)
ws.AutoSizeColumn(0);
ws.AutoSizeColumn(1);

これらのフォーマット呼び出しは、Excel ファイル形式のオブジェクトモデルを反映しつつ Interop を必要としない IronXL セルスタイリング API を使用します。

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

これで、 IronXLを使用してExcelファイルをASP.NET GridViewにインポートし、GridViewのデータをExcelにエクスポートするための、ドライバ不要の完全なパイプラインが完成しました。 この基盤の上にさらに発展させるために、次に探求すべき事項は以下のとおりです。

  • 数式評価、セル範囲操作、グラフ作成など、API リファレンスの全容については、 IronXL のドキュメントを参照してください。 **IronXLのコード例**ライブラリには、CSVインポート、パスワード保護されたワークブック、条件付き書式設定など、すぐに実行できるコードスニペットが豊富に用意されています。
  • Excel to DataTable チュートリアル をお試しください 型付き列マッピングとヌル処理の詳細を深く学びたい場合。 IronXLのライセンスページで、開発ライセンスからOEM再配布ライセンスまでのオプションをご確認ください
  • Iron Software の .NET Excel 読み込みガイド を確認する ワークブックとワークシートのナビゲーションを詳細に理解するため。
  • IronXL と他の選択肢を比較する ため、C# Excel ライブラリ比較 で OLEDB、EPPlus、およびOpen XML SDK に対する機能ごとの比較を行います。

.NET CoreおよびASP.NET Coreアプリケーションの場合、同じIronXL APIがRazor PagesとMVCコントローラーの両方で動作します。 IronXL ASP.NET Core ガイド は、ファイルアップロードの処理と依存性注入パターンの違いを説明します。

購入前に、IronXLの無料トライアルを利用して、プロジェクトですべての機能を試してみてください。 試用版ライセンスにはクレジットカードは不要です。

Curtis Chau
テクニカルライター

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

...
詳しく読む

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。