Blazor Read Excel File in C# Using IronXL (Example Tutorial)
はじめに
BlazorはMicrosoftによって作成されたオープンソース for .NET Webフレームワークです。 Blazorアプリケーションは、C#コードをブラウザ対応 for JavaScriptとHTMLにコンパイルすることで機能します。 このチュートリアルでは、BlazorサーバーサイドアプリケーションでIronXL C#ライブラリを使用してExcel文書/ワークシートを読み取るための最良で簡単な方法について知識を共有します。
BlazorでExcelファイルを読む方法
- Blazor で Excel ファイルを読み取るための C# ライブラリをインストールする
- Blazorアプリケーションにファイルアップロードボタンを作成する
- C#ライブラリを使用してディスクからExcelファイルを読む
- Blazorアプリを設定して、ウィンドウ上のテーブルに読み取ったデータを表示する
IronXLを使い始める
ステップ1 - Visual StudioでBlazorプロジェクトを作成
私は次のデータを含むXLSXファイルを用意しており、それをBlazorサーバーアプリで読み取り、開く予定です。
| XLSX Excelシートを入力 | Blazor Server Browserでの結果 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Visual Studio IDEでBlazorプロジェクトを作成することから始めます:
Blazor Server App プロジェクトの種類を選択してください:
F5 キーを使用して、ソリューションを変更せずにアプリケーションを実行してください。 アプリケーションの Fetch data タブに、次のように移動します:
私たちの目標は、アップロードボタンを使って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を追加
ソリューションの .csproj ファイル内の任意の <ItemGroup> に以下の行を追加することで、IronXL をプロジェクトに直接組み込むことができます:
<PackageReference Include="IronXl.Excel" Version="*" />
<PackageReference Include="IronXl.Excel" Version="*" />
Visual Studioでこのように示されています:
ステップ3 - ファイルアップロードと表示のコーディング
Visual Studioのソリューションビューで、FetchData.razorファイルを探してください。他のRazorファイルを使用することも可能ですが、ここではBlazor Serverアプリテンプレートに付属しているこのファイルを使用します。
ファイルの内容を次のコードに置き換えます:
@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());
}
}
}
Imports IronXL
Imports System.Data
@page "/fetchdata"
<PageTitle>Excel File Viewer</PageTitle>
<h1>Open Excel File to View</h1>
<InputFile OnChange="@OpenExcelFileFromDisk" />
<table>
<thead>
<tr>
@For Each column As DataColumn In displayDataTable.Columns
<th>
@column.ColumnName
</th>
Next
</tr>
</thead>
<tbody>
@For Each row As DataRow In displayDataTable.Rows
<tr>
@For Each column As DataColumn In displayDataTable.Columns
<td>
@row(column.ColumnName).ToString()
</td>
Next
</tr>
Next
</tbody>
</table>
@code {
' Create a DataTable instance
Private displayDataTable As New DataTable()
' This method is triggered when a file is uploaded
Private Async Function OpenExcelFileFromDisk(e As InputFileChangeEventArgs) As Task
IronXl.License.LicenseKey = "PASTE TRIAL OR LICENSE KEY"
' Load the uploaded file into a MemoryStream
Dim ms As New MemoryStream()
Await e.File.OpenReadStream().CopyToAsync(ms)
ms.Position = 0
' Create an IronXL workbook from the MemoryStream
Dim loadedWorkBook As WorkBook = WorkBook.FromStream(ms)
Dim loadedWorkSheet As WorkSheet = loadedWorkBook.DefaultWorkSheet ' Or use .GetWorkSheet()
' Add header Columns to the DataTable
Dim headerRow As RangeRow = loadedWorkSheet.GetRow(0)
For col As Integer = 0 To loadedWorkSheet.ColumnCount - 1
displayDataTable.Columns.Add(headerRow.ElementAt(col).ToString())
Next
' Populate the DataTable with data from the Excel sheet
For row As Integer = 1 To loadedWorkSheet.RowCount - 1
Dim excelRow As IEnumerable(Of String) = loadedWorkSheet.GetRow(row).ToArray().Select(Function(c) c.ToString())
displayDataTable.Rows.Add(excelRow.ToArray())
Next
End Function
}
まとめ
<InputFile> コンポーネントを使用すると、このウェブページにファイルをアップロードできます。 呼び出されるイベントのコールバックとして OpenExcelFileFromDisk を設定しました。これは、下部の @code ブロックにある非同期メソッドです。 HTMLはタブにExcelシートをテーブルとしてレンダリングします。
IronXl.Excelは、さまざまなスプレッドシート形式を読み取るための独立した.NETソフトウェアライブラリです。 Microsoft Excelがインストールされている必要はなく、Interopに依存していません。
さらに読む
よくある質問
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は最新 for .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がサポートするファイル形式であることを再度確認してください。

