ライブ環境でテストする
ウォーターマークなしで本番環境でテストしてください。
必要な場所でいつでも動作します。
今日は、BlazorとIronXLを使用してExcelファイルをCSV形式に変換する方法について説明します。 このチュートリアルの終わりまでには、ExcelデータをCSVなど様々な形式でエクスポートする基本的なBlazorアプリケーションを作成できるようになります。
IronXLは強力な.NET ExcelライブラリExcelファイルと互換性を持つように設計されています幅広いフォーマット、XLS、XLSX、XLSM、XLTX、CSVを含みます。これにより、開発者はMicrosoft OfficeまたはExcel Interopを必要とせずに、プログラムによってExcelデータを読み取り、書き込み、操作することができます。
IronXLを使用すると、Excelファイルを作成、読み込み、保存できます。Excelワークブック個々のセルまたは範囲にデータを読み書きすることもできます。 また、高度な機能もサポートしており、フォーマット, 数式, グラフ、およびピボットテーブル。 IronXLはさまざまな.NETフレームワークと互換性があり、C#やVB.NETのような人気の言語で使用できます。
まず、Blazor Serverプロジェクトを新規作成する必要があります。 Visual Studioを開き、新しいプロジェクトを作成し、「Blazor Server App」テンプレートを選択してください。 プロジェクトに名前を付け、「作成」をクリックしてください。
プロジェクトが作成されたら、Pages フォルダーを開き、Index.razor ファイルを見つけます。ここに Blazor コンポーネントを追加し、ファイルのアップロードと変換を処理するコードを記述します。
コードの記述を始める前に、IronXLライブラリをインストールする必要があります。 Visual Studio で パッケージマネージャーコンソール を開き、次のコマンドを実行してください:
Install-Package IronXL.Excel
このコマンドは、BlazorプロジェクトにIronXLライブラリをインストールします。 これでコードの記述を開始する準備が整いました。!
まず、ユーザーが既存のExcelファイルをアップロードできる基本的なファイルアップロードコンポーネントを作成します。次に、Microsoft.AspNetCore.Components.Forms
名前空間からInputFile
コンポーネントを追加します。 次のコードを Index.razor ファイルの "@page \"/\"" 行の下に追加してください:
@using Microsoft.AspNetCore.Components.Forms
@using IronXL
@using System.IO
@using System.Threading.Tasks
<div class="container">
<h3>File Upload</h3>
<InputFile class="button" OnChange="@OnInputFileChange" accept=".xls,.xlsx,.xlsm,.xltx,.csv,.tsv" />
<h3>Selected File: @originalFileName</h3>
<h3 style="color:bisque">Is File converted: <span>@message</span></h3>
</div>
@using Microsoft.AspNetCore.Components.Forms
@using IronXL
@using System.IO
@using System.Threading.Tasks
<div class="container">
<h3>File Upload</h3>
<InputFile class="button" OnChange="@OnInputFileChange" accept=".xls,.xlsx,.xlsm,.xltx,.csv,.tsv" />
<h3>Selected File: @originalFileName</h3>
<h3 style="color:bisque">Is File converted: <span>@message</span></h3>
</div>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'@using Microsoft.AspNetCore.Components.Forms @using IronXL @using System.IO @using System.Threading.Tasks <div class="container"> <h3> File Upload</h3> <InputFile class="button" OnChange="@OnInputFileChange" accept=".xls,.xlsx,.xlsm,.xltx,.csv,.tsv" /> <h3> Selected File: @originalFileName</h3> <h3 style="color:bisque"> @Is File converted: <span> @message</span></h3> </div>
このコードは、ファイルアップロードコンポーネントを設定し、ボタンとファイル変換のステータスを表示するメッセージ領域を含んでいます。 InputFile
コンポーネントのaccept
属性は、受け入れるファイル形式を指定します。
それでは、ファイルのアップロードと変換を処理するコードを書きましょう。 このタスクを達成するために、IronXL、Blazor、及びC#の組み合わせが使用されます。 IronXLを使用してCSVファイルをExcelファイルに変換する.
以下のコードを以前追加した div
要素の下に Index.razor ファイルに追加してください。
@code {
private string originalFileName;
private string message = "";
private async Task OnInputFileChange(InputFileChangeEventArgs e)
{
var file = e.File;
originalFileName = file.Name;
try
{
// Read the uploaded file into a memory stream
using var memoryStream = new MemoryStream();
await file.OpenReadStream().CopyToAsync(memoryStream);
// Load the workbook using IronXL
WorkBook workBook = WorkBook.Load(memoryStream);
// Save the workbook as a CSV file
string outputPath = "sample.csv";
workBook.SaveAsCsv(outputPath);
message = "Conversion completed!";
}
catch (Exception ex)
{
message = $"An error occurred: {ex.Message}";
}
}
}
@code {
private string originalFileName;
private string message = "";
private async Task OnInputFileChange(InputFileChangeEventArgs e)
{
var file = e.File;
originalFileName = file.Name;
try
{
// Read the uploaded file into a memory stream
using var memoryStream = new MemoryStream();
await file.OpenReadStream().CopyToAsync(memoryStream);
// Load the workbook using IronXL
WorkBook workBook = WorkBook.Load(memoryStream);
// Save the workbook as a CSV file
string outputPath = "sample.csv";
workBook.SaveAsCsv(outputPath);
message = "Conversion completed!";
}
catch (Exception ex)
{
message = $"An error occurred: {ex.Message}";
}
}
}
code
If True Then
private String originalFileName
private String message = ""
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
' private async Task OnInputFileChange(InputFileChangeEventArgs e)
' {
' var file = e.File;
' originalFileName = file.Name;
'
' try
' {
' ' Read the uploaded file into a memory stream
' var memoryStream = New MemoryStream();
' await file.OpenReadStream().CopyToAsync(memoryStream);
'
' ' Load the workbook using IronXL
' WorkBook workBook = WorkBook.Load(memoryStream);
'
' ' Save the workbook as a CSV file
' string outputPath = "sample.csv";
' workBook.SaveAsCsv(outputPath);
'
' message = "Conversion completed!";
' }
' catch (Exception ex)
' {
' message = string.Format("An error occurred: {0}", ex.Message);
' }
' }
End If
このコードは OnInputFileChange
と呼ばれるプライベートメソッドを定義しており、InputFile
コンポーネントを使用して Excel スプレッドシートがアップロードされたときにトリガーされます。 ExcelはXLSまたはXLSX形式に対応しています。 コードはアップロードされた基本的なExcelファイルを読み取り、それをロードします。WorkBook
オブジェクトを取得し、その後 WorkBook
をCSVファイルとして保存します。変換のステータスはページのメッセージエリアに表示されます。
まず、完全なコードを見てください:
@page "/"
@using Microsoft.AspNetCore.Components.Forms
@using IronXL
@using System.IO
@using System.Threading.Tasks
<style>
body{
background-color: skyblue
}
.container {
max-width: 800px;
margin: 0 auto;
font-family: Arial, sans-serif;
}
h3 {
margin-top: 30px;
font-size: 30px;
margin-bottom: 30px;
}
.button {
background-color: #4CAF50;
border: none;
color: white;
padding: 15px 32px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin: 15px 0;
cursor: pointer;
}
span{
font-size: 20px;
}
</style>
<div class="container">
<h3>File Upload</h3>
<InputFile class="button" OnChange="@OnInputFileChange" accept=".xls,.xlsx,.xlsm,.xltx,.csv,.tsv" />
<h3>Selected File: @originalFileName</h3>
<h3 style="color:bisque">Is File converted: <span>@message</span></h3>
</div>
@code {
private string originalFileName;
private string message = "";
private async Task OnInputFileChange(InputFileChangeEventArgs e)
{
var file = e.File;
originalFileName = file.Name;
try
{
// Read the uploaded file into a memory stream
using var memoryStream = new MemoryStream();
await file.OpenReadStream().CopyToAsync(memoryStream);
// Load the workbook using IronXL
WorkBook workBook = WorkBook.Load(memoryStream);
// Save the workbook as a CSV file
string outputPath = "sample.csv";
workBook.SaveAsCsv(outputPath);
message = "Conversion completed!";
}
catch (Exception ex)
{
message = $"An error occurred: {ex.Message}";
}
}
}
@page "/"
@using Microsoft.AspNetCore.Components.Forms
@using IronXL
@using System.IO
@using System.Threading.Tasks
<style>
body{
background-color: skyblue
}
.container {
max-width: 800px;
margin: 0 auto;
font-family: Arial, sans-serif;
}
h3 {
margin-top: 30px;
font-size: 30px;
margin-bottom: 30px;
}
.button {
background-color: #4CAF50;
border: none;
color: white;
padding: 15px 32px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin: 15px 0;
cursor: pointer;
}
span{
font-size: 20px;
}
</style>
<div class="container">
<h3>File Upload</h3>
<InputFile class="button" OnChange="@OnInputFileChange" accept=".xls,.xlsx,.xlsm,.xltx,.csv,.tsv" />
<h3>Selected File: @originalFileName</h3>
<h3 style="color:bisque">Is File converted: <span>@message</span></h3>
</div>
@code {
private string originalFileName;
private string message = "";
private async Task OnInputFileChange(InputFileChangeEventArgs e)
{
var file = e.File;
originalFileName = file.Name;
try
{
// Read the uploaded file into a memory stream
using var memoryStream = new MemoryStream();
await file.OpenReadStream().CopyToAsync(memoryStream);
// Load the workbook using IronXL
WorkBook workBook = WorkBook.Load(memoryStream);
// Save the workbook as a CSV file
string outputPath = "sample.csv";
workBook.SaveAsCsv(outputPath);
message = "Conversion completed!";
}
catch (Exception ex)
{
message = $"An error occurred: {ex.Message}";
}
}
}
page "/" [using] Microsoft.AspNetCore.Components.Forms [using] IronXL [using] System.IO [using] ReadOnly Property body() As System.Threading.Tasks(Of style)
background-color: skyblue
End Property
.container
If True Then
max-width: 800px
margin:
0 auto
font-family: Arial, sans-serif
End If
h3
If True Then
margin-top: 30px
font-size: 30px
margin-bottom: 30px
End If
.button
If True Then
background-color: #4CAF50
border:
none
color:
white
padding:
15px 32px
text-align: center
text-decoration: none
display:
inline-block
font-size: 16px
margin:
15px 0
cursor:
pointer
End If
span
If True Then
font-size: 20px
End If
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: </style> <div class="container"> <h3> File Upload</h3> <InputFile class="button" OnChange="@OnInputFileChange" accept=".xls,.xlsx,.xlsm,.xltx,.csv,.tsv" /> <h3> Selected File: originalFileName</h3> <h3 style="color:bisque"> @Is File converted: <span> message</span></h3> </div> @code
".xls,.xlsx,.xlsm,.xltx,.csv,.tsv" /> (Of h3) Selected File: originalFileName</h3> <h3 style="color:bisque"> [Is] File converted: (Of span) message</span></h3> </div> code
If True Then
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: </style> <div class="container"> <h3> File Upload</h3> <InputFile class="button" OnChange="@OnInputFileChange" accept=".xls,.xlsx,.xlsm,.xltx,.csv,.tsv" /> <h3> Selected File: originalFileName</h3> <h3 style
"@OnInputFileChange" accept=".xls,.xlsx,.xlsm,.xltx,.csv,.tsv" /> (Of h3) Selected File: originalFileName</h3> <h3 style
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: </style> <div class="container"> <h3> File Upload</h3> <InputFile class="button" OnChange="@OnInputFileChange" accept
"button" OnChange="@OnInputFileChange" accept
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: </style> <div class="container"> <h3> File Upload</h3> <InputFile class="button" OnChange
"container"> (Of h3) File Upload</h3> <InputFile class="button" OnChange
</style> <div class="container"> (Of h3) File Upload</h3> <InputFile class
private String originalFileName
private String message = ""
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
' private async Task OnInputFileChange(InputFileChangeEventArgs e)
' {
' var file = e.File;
' originalFileName = file.Name;
'
' try
' {
' ' Read the uploaded file into a memory stream
' var memoryStream = New MemoryStream();
' await file.OpenReadStream().CopyToAsync(memoryStream);
'
' ' Load the workbook using IronXL
' WorkBook workBook = WorkBook.Load(memoryStream);
'
' ' Save the workbook as a CSV file
' string outputPath = "sample.csv";
' workBook.SaveAsCsv(outputPath);
'
' message = "Conversion completed!";
' }
' catch (Exception ex)
' {
' message = string.Format("An error occurred: {0}", ex.Message);
' }
' }
End If
コードをさらに分解してみましょう:
ファイルがアップロードされると、OnInputFileChange
メソッドがトリガーされ、InputFileChangeEventArgs
オブジェクトがそれに渡されます。 このオブジェクトには、アップロードされたファイルの名前やサイズなどの情報が含まれています。
オリジナルのファイル名をページに表示するために、originalFileName
という変数に保存します。
try-catchブロック内で、新しいMemoryStream
オブジェクトを作成し、アップロードされたファイルの内容を読み取ります。 using
ステートメントは、メモリストリームが不要になった際に適切に破棄されることを保証します。
アップロードされたファイルの内容をメモリストリームに非同期でコピーするために、await
キーワードを使用します。 これにより、ファイルを読み込んでいる間もこのアプリケーションの応答性が維持されます。
次に、WorkBook.Load
メソッドは、メモリ ストリームの内容を WorkBook
オブジェクトに読み込むために使用されます。 このオブジェクトは、シート、セル、データを含むExcelワークブック全体を表します。
次に、変換されたCSVファイルの出力ファイル名を指定します。この場合、名前は「sample.csv」を使用します。
についてSaveAsCsv(CSVとして保存)
WorkBook
オブジェクトのメソッドは、指定された出力ファイル名でワークブックをCSVファイルとして保存するために使用されます。
Blazorアプリケーションが完成したので、テストする時が来ました。! Visual Studioでアプリケーションを実行するにはF5キーを押してください。 アプリケーションが実行されたら、ページにファイルアップロードボタンが表示されるはずです。
Blazorアプリケーションを実行する
ボタンをクリックして、アップロードするExcelファイルを選択してください。 受け入れ可能なファイル形式は InputFile
コンポーネントの accept 属性にリストされています。
Excelファイルを選択してください
ファイルを選択した後、アプリケーションはそのファイルを読み取り、IronXL を使用して CSV 形式に変換し、指定された出力ファイル名で変換されたファイルを保存します。 変換の状態および元のファイル名を示すメッセージが表示されるはずです。
変換ステータス
おめでとうございます! BlazorアプリケーションをIronXLを使用してExcelファイルをCSV形式でエクスポートできるように正常に構築しました。 以下のスクリーンショットは、上記プログラムの出力を示しています。
出力Excelファイル
このチュートリアルでは、IronXL を使用して Excel ファイルを CSV 形式にエクスポートできる Blazor アプリケーションを構築する方法を示しました。 以下は、IronXLの強力な機能を使って、ファイルアップロードコンポーネントの作成、ファイルのアップロード処理、およびExcelファイルをCSV形式に変換する方法を示したものです。
IronXLをBlazorアプリケーションに組み込むことで、データのインポート、操作、エクスポートなど、さまざまなExcel関連のタスクを簡単に処理できます。 これは、プロジェクトに幅広い可能性をもたらし、ユーザーにより充実した体験を提供するのに役立ちます。 Here is the translation of the provided text into Japanese:
あなたはCSVをExcelに変換IronXLライブラリを使用してBlazorにおいて。
IronXLは、無料試用購入を決定する前に、その機能および能力をテストできるようにするためです。 試用期間終了後、IronXLのライセンスは$749から始まります。
9つの .NET API製品 オフィス文書用