IronXLを使用したBlazorでのC#のExcelファイル読み取り(例としてのチュートリアル)

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

イントロダクション

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

BlazorでのIronXLを使用したExcel表示のデモンストレーション

IronXLで始めましょう

今日から無料トライアルでIronXLをあなたのプロジェクトで使い始めましょう。

最初のステップ:
green arrow pointer


手順 1 - Visual StudioでBlazorプロジェクトを作成

以下のデータを含むXLSXファイルがあり、それをBlazor Serverアプリで読み込み、開きます:

Input XLSX Excel Sheet Result in Blazor Server Browser
First name Last name 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キーを押してアプリケーションを実行してください。 このようにしてアプリケーションのデータの取得タブに移動します:

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+をサポートしています。

次の方法のいずれかを使用して、IronXLをソリューションに追加し、次にソリューションをビルドしてください。

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

Install-Package IronXL.Excel

Option 2B - csprojファイルにPackageReferenceを追加

IronXLをプロジェクトに直接追加するには、ソリューションの.csprojファイル内の任意の<ItemGroup>に次の行を追加してください:

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

Visual Studio で表示されているように:

Add Ironxl Csproj related to Option 2B - csprojファイルにPackageReferenceを追加

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

Visual Studio ソリューションビューで、Pages/ フォルダーに移動し、FetchData.razor ファイルを探します。他の razor ファイルを使用することもできますが、Blazor Server App テンプレートに付属しているため、このファイルを使用します。

以下のコードに置き換えてください:

@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 private DataTable displayDataTable = new DataTable(); // When a file is uploaded to the App using the InputFile, trigger: async Task OpenExcelFileFromDisk(InputFileChangeEventArgs e) { IronXL.License.LicenseKey = "PASTE TRIAL OR LICENSE KEY"; // Open the File to a MemoryStream object MemoryStream ms = new MemoryStream(); await e.File.OpenReadStream().CopyToAsync(ms); ms.Position = 0; // Define variables for IronXL 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 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 private DataTable displayDataTable = new DataTable(); // When a file is uploaded to the App using the InputFile, trigger: async Task OpenExcelFileFromDisk(InputFileChangeEventArgs e) { IronXL.License.LicenseKey = "PASTE TRIAL OR LICENSE KEY"; // Open the File to a MemoryStream object MemoryStream ms = new MemoryStream(); await e.File.OpenReadStream().CopyToAsync(ms); ms.Position = 0; // Define variables for IronXL 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 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 '	private DataTable displayDataTable = New DataTable(); ' '	' When a file is uploaded to the App using the InputFile, trigger: '	async Task OpenExcelFileFromDisk(InputFileChangeEventArgs e) '	{ '	IronXL.License.LicenseKey = "PASTE TRIAL OR LICENSE KEY"; ' '	' Open the File to a MemoryStream object '	MemoryStream ms = New MemoryStream(); ' '	await e.File.OpenReadStream().CopyToAsync(ms); '	ms.Position = 0; ' '	' Define variables for IronXL '	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 '	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>コンポーネントを使用すると、このウェブページにファイルをアップロードできます。 そして、呼び出されたイベントコールバックが、下部の@codeブロックにある非同期メソッドであるOpenExcelFileFromDiskを呼び出すように設定しました。 HTMLはタブ上のテーブルとしてExcelシートをレンダリングします。

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


さらなる読み物

Documentation related to さらなる読み物

APIリファレンスを表示

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

APIリファレンスを表示

ソフトウェア製品をダウンロードしてください。