C#を使用してBlazorでExcelファイルを読み取る方法

Blazor Read Excel File in C# Using IronXL (Example Tutorial)

This article was translated from English: Does it need improvement?
Translated
View the article in English

はじめに

BlazorはMicrosoftによって作成されたオープンソースの.NET Webフレームワークです。 Blazorアプリケーションは、C#コードをブラウザ対応のJavaScriptとHTMLにコンパイルすることで機能します。 このチュートリアルでは、BlazorサーバーサイドアプリケーションでIronXL C#ライブラリを使用してExcel文書/ワークシートを読み取るための最良で簡単な方法について知識を共有します。

BlazorでのIronXLによるExcelの表示のデモ
class="hsg-featured-snippet">

BlazorでExcelファイルを読み取る方法

  1. BlazorでExcelファイルを読み取るためのC#ライブラリをインストール
  2. Blazorアプリケーションにファイルアップロードボタンを作成
  3. ディスクからExcelファイルを読み取るためのC#ライブラリを使用
  4. 読み取ったデータをウィンドウのテーブルに表示するようにBlazorアプリを設定

IronXLを始めましょう

今日あなたのプロジェクトでIronXLを無料トライアルで使用開始。

最初のステップ:
green arrow pointer


ステップ1 - Visual StudioでBlazorプロジェクトを作成

私は次のデータを含むXLSXファイルを用意しており、それをBlazorサーバーアプリで読み取り、開く予定です。

入力XLSX Excelシート Blazorサーバーブラウザでの結果
ID
John Applesmith 1
Richard Smith 2
Sherry Robins 3
Browser View related to ステップ1 - Visual StudioでBlazorプロジェクトを作成

Visual Studio IDEでBlazorプロジェクトを作成することから始めます:

New Project related to ステップ1 - Visual StudioでBlazorプロジェクトを作成

プロジェクトタイプをBlazor Server Appとして選択:

Choose Blazor Project Type related to ステップ1 - Visual StudioでBlazorプロジェクトを作成

F5キーでソリューションを変更せずにアプリケーションを実行します。 アプリケーションのFetch dataタブへナビゲートします:

First Run related to ステップ1 - Visual StudioでBlazorプロジェクトを作成

私たちの目標は、アップロードボタンを使ってExcelファイルをBlazorアプリに読み込み、このページに表示することです。

ステップ2 - IronXLをソリューションに追加

IronXL: .NET Excelライブラリ (インストール手順):

IronXLは、Microsoft Excel内のスプレッドシートをオブジェクトのように扱うことを可能にする.NETライブラリで、開発者がデータストリームを操作するためにC#と.NET Frameworkの全力を使用できるようにします。 開発者として、Excel文書/ワークシートからアプリケーションやデータベースへの行のセルおよび列情報を取得するための素晴らしい方法を求めています。

IronXLを使用すると、ワークシートからセル値、セルの内容、イメージ、参照、フォーマットなどの様々な情報を取得できます。 IronXLは多くの点でNPOIよりも優れています。 IronXLはより多くの機能を提供し、複雑なロジックを簡単に書くことができます。 また、より好ましいライセンスと、より有能なサポートチームを持っています。

IronXLは.NET(8、7、及び6)の最新バージョンと.NET Core Framework 4.6.2+をすべてサポートしています。

以下の方法の1つを使用して、IronXLをソリューションに追加し、ソリューションをビルドします。

オプション2A - NuGetパッケージマネージャを使用

Install-Package IronXL.Excel

オプション2B - csprojファイルにPackageReferenceを追加

IronXLを、ソリューションの.csprojファイル内の任意の<ItemGroup>に次の行を追加することでプロジェクトに直接追加できます:

<PackageReference Include="IronXL.Excel" Version="*" />
<PackageReference Include="IronXL.Excel" Version="*" />
XML

Visual Studioでこのように示されています:

Add Ironxl Csproj related to オプション2B - csprojファイルにPackageReferenceを追加

ステップ3 - ファイルアップロードと表示のコーディング

Visual StudioソリューションビューでPages/フォルダに移動し、FetchData.razorファイルを見つけます。他のrazorファイルを使用してもよいですが、Blazorサーバーアプリのテンプレートにはこれが含まれているため、これを使用します。

ファイルの内容を次のコードに置き換えます:

@using IronXL;
@using System.Data;

@page "/fetchdata"

<PageTitle>Excel File Viewer</PageTitle>

<h1>Open Excel File to View</h1>

<InputFile OnChange="@OpenExcelFileFromDisk" />

<table>
    <thead>
        <tr>
            @foreach (DataColumn column in displayDataTable.Columns)
            {
                <th>
                    @column.ColumnName
                </th>
            }
        </tr>
    </thead>
    <tbody>
        @foreach (DataRow row in displayDataTable.Rows)
        {
            <tr>
                @foreach (DataColumn column in displayDataTable.Columns)
                {
                    <td>
                        @row[column.ColumnName].ToString()
                    </td>
                }
            </tr>
        }
    </tbody>
</table>

@code {
    // Create a DataTable instance
    private DataTable displayDataTable = new DataTable();

    // This method is triggered when a file is uploaded
    async Task OpenExcelFileFromDisk(InputFileChangeEventArgs e)
    {
        IronXL.License.LicenseKey = "PASTE TRIAL OR LICENSE KEY";

        // Load the uploaded file into a MemoryStream
        MemoryStream ms = new MemoryStream();

        await e.File.OpenReadStream().CopyToAsync(ms);
        ms.Position = 0;

        // Create an IronXL workbook from the MemoryStream
        WorkBook loadedWorkBook = WorkBook.FromStream(ms);
        WorkSheet loadedWorkSheet = loadedWorkBook.DefaultWorkSheet; // Or use .GetWorkSheet()

        // Add header Columns to the DataTable
        RangeRow headerRow = loadedWorkSheet.GetRow(0);
        for (int col = 0; col < loadedWorkSheet.ColumnCount; col++)
        {
            displayDataTable.Columns.Add(headerRow.ElementAt(col).ToString());
        }

        // Populate the DataTable with data from the Excel sheet
        for (int row = 1; row < loadedWorkSheet.RowCount; row++)
        {
            IEnumerable<string> excelRow = loadedWorkSheet.GetRow(row).ToArray().Select(c => c.ToString());
            displayDataTable.Rows.Add(excelRow.ToArray());
        }
    }
}
@using IronXL;
@using System.Data;

@page "/fetchdata"

<PageTitle>Excel File Viewer</PageTitle>

<h1>Open Excel File to View</h1>

<InputFile OnChange="@OpenExcelFileFromDisk" />

<table>
    <thead>
        <tr>
            @foreach (DataColumn column in displayDataTable.Columns)
            {
                <th>
                    @column.ColumnName
                </th>
            }
        </tr>
    </thead>
    <tbody>
        @foreach (DataRow row in displayDataTable.Rows)
        {
            <tr>
                @foreach (DataColumn column in displayDataTable.Columns)
                {
                    <td>
                        @row[column.ColumnName].ToString()
                    </td>
                }
            </tr>
        }
    </tbody>
</table>

@code {
    // Create a DataTable instance
    private DataTable displayDataTable = new DataTable();

    // This method is triggered when a file is uploaded
    async Task OpenExcelFileFromDisk(InputFileChangeEventArgs e)
    {
        IronXL.License.LicenseKey = "PASTE TRIAL OR LICENSE KEY";

        // Load the uploaded file into a MemoryStream
        MemoryStream ms = new MemoryStream();

        await e.File.OpenReadStream().CopyToAsync(ms);
        ms.Position = 0;

        // Create an IronXL workbook from the MemoryStream
        WorkBook loadedWorkBook = WorkBook.FromStream(ms);
        WorkSheet loadedWorkSheet = loadedWorkBook.DefaultWorkSheet; // Or use .GetWorkSheet()

        // Add header Columns to the DataTable
        RangeRow headerRow = loadedWorkSheet.GetRow(0);
        for (int col = 0; col < loadedWorkSheet.ColumnCount; col++)
        {
            displayDataTable.Columns.Add(headerRow.ElementAt(col).ToString());
        }

        // Populate the DataTable with data from the Excel sheet
        for (int row = 1; row < loadedWorkSheet.RowCount; row++)
        {
            IEnumerable<string> excelRow = loadedWorkSheet.GetRow(row).ToArray().Select(c => c.ToString());
            displayDataTable.Rows.Add(excelRow.ToArray());
        }
    }
}
Private IronXL As [using]
Private System As [using]

'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'@page "/fetchdata" (Of PageTitle) Excel File Viewer</PageTitle> (Of h1) Open Excel File @to View</h1> <InputFile OnChange="@OpenExcelFileFromDisk" /> (Of table) (Of thead) (Of tr) @foreach(DataColumn column in displayDataTable.Columns)
'			{
'				<th> @column.ColumnName </th>
'			}
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'		</tr> </thead> (Of tbody) @foreach(DataRow row in displayDataTable.Rows)
'		{
'			<tr> @foreach(DataColumn column in displayDataTable.Columns)
'				{
'					<td> @row[column.ColumnName].ToString() </td>
'				}
'			</tr>
'		}
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'	</tbody> </table> @code
'	{
'	' Create a DataTable instance
'	private DataTable displayDataTable = New DataTable();
'
'	' This method is triggered when a file is uploaded
'	async Task OpenExcelFileFromDisk(InputFileChangeEventArgs e)
'	{
'		IronXL.License.LicenseKey = "PASTE TRIAL OR LICENSE KEY";
'
'		' Load the uploaded file into a MemoryStream
'		MemoryStream ms = New MemoryStream();
'
'		await e.File.OpenReadStream().CopyToAsync(ms);
'		ms.Position = 0;
'
'		' Create an IronXL workbook from the MemoryStream
'		WorkBook loadedWorkBook = WorkBook.FromStream(ms);
'		WorkSheet loadedWorkSheet = loadedWorkBook.DefaultWorkSheet; ' Or use .GetWorkSheet()
'
'		' Add header Columns to the DataTable
'		RangeRow headerRow = loadedWorkSheet.GetRow(0);
'		for (int col = 0; col < loadedWorkSheet.ColumnCount; col++)
'		{
'			displayDataTable.Columns.Add(headerRow.ElementAt(col).ToString());
'		}
'
'		' Populate the DataTable with data from the Excel sheet
'		for (int row = 1; row < loadedWorkSheet.RowCount; row++)
'		{
'			IEnumerable<string> excelRow = loadedWorkSheet.GetRow(row).ToArray().@Select(c => c.ToString());
'			displayDataTable.Rows.Add(excelRow.ToArray());
'		}
'	}
'}
$vbLabelText   $csharpLabel

まとめ

<InputFile>コンポーネントは、このウェブページでファイルをアップロードすることを可能にします。 イベントコールバックがOpenExcelFileFromDiskを呼び出すように設定されており、それは@codeブロックの底部にある非同期メソッドです。 HTMLはタブにExcelシートをテーブルとしてレンダリングします。

IronXL.Excelは、さまざまなスプレッドシート形式を読み取るための独立した.NETソフトウェアライブラリです。 Microsoft Excelがインストールされている必要はなく、Interopに依存していません。


class="tutorial-segment-title">さらなるリーディング

class="tutorial-section">
class="row">
class="col-sm-4">
class="tutorial-image"> Documentation related to class=さらなるリーディング" class="img-responsive add-shadow img-responsive img-popup" src="/img/svgs/documentation.svg" loading="lazy">
class="col-sm-8">

APIリファレンスを表示

IronXLのAPIリファレンスを探索し、IronXLのすべての機能、名前空間、クラス、メソッドフィールド、列挙型の詳細を示します。

APIリファレンスを表示

ソフトウェア製品をダウンロード

よくある質問

BlazorサーバーサイドアプリケーションでExcelファイルを読む方法は?

BlazorサーバーサイドアプリケーションでExcelファイルを読むには、IronXL C#ライブラリを使用することができます。NuGetパッケージマネージャーを使用してライブラリをインストールし、その後Excelデータを読み取り表示するコードを実装することで、Blazorプロジェクトと簡単に統合できます。

BlazorプロジェクトでExcelファイルを読むための手順は何ですか?

まず、NuGetパッケージマネージャー経由でIronXLをインストールします。次に、Blazorアプリケーションでファイルアップロードボタンを作成します。アップロードされたExcelファイルを読むためにIronXLを使用し、Razorコンポーネントを使用してデータをテーブル形式で表示するようにアプリを設定します。

ExcelをインストールせずにBlazorアプリケーションでExcelファイルを読むことは可能ですか?

はい、IronXLを使用すると、システムにMicrosoft ExcelをインストールせずにBlazorアプリケーションでExcelファイルの読み取りや操作が可能です。

BlazorアプリケーションでExcelデータを表示する方法は?

IronXLを使用してExcelファイルを読み取った後、Razorコンポーネントを使用してBlazorアプリケーションでデータをテーブル形式で表示し、ユーザーインターフェースを向上させることができます。

IronXLは他のExcelライブラリに対してどのような利点がありますか?

IronXLは、広範囲の機能、複雑なロジックを扱いやすいこと、優れたライセンス条件、専用のサポートを提供し、NPOIのような代替品よりも優れた選択肢となっています。

IronXLがExcel操作に対応している.NETのバージョンはどれですか?

IronXLは最新の.NETバージョン、8、7、および6、さらに.NET Core Framework 4.6.2+をサポートしており、現代のアプリケーションとの幅広い互換性を確保しています。

ExcelライブラリをBlazorプロジェクトに統合する方法は?

NuGetパッケージマネージャーを使用してdotnet add package IronXL.Excelのコマンドを使用するか、.csprojファイルにPackageReferenceを追加することで、IronXLのようなExcelライブラリをBlazorプロジェクトに統合することができます。

BlazorアプリがExcelファイルの読み取りに失敗した場合、どのようなトラブルシューティングの手順を取ることができますか?

IronXLがNuGetを通じて正しくインストールされていること、およびBlazorアプリがディスクからファイルを読むための必要な権限を持っていることを確認してください。Excelファイルのパスが正しく、IronXLがサポートするファイル形式であることを再度確認してください。

Curtis Chau
テクニカルライター

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

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

準備はいいですか?
Nuget ダウンロード 1,686,155 | バージョン: 2025.11 ただ今リリースされました