フッターコンテンツにスキップ
IRONXLの使用

BlazorでCSVにエクスポートする方法

今日は、BlazorとIronXLを使用してExcelファイルをCSV形式に変換する方法について詳しく見ていきます。 このチュートリアルの終わりには、CSVなどさまざまな形式でExcelデータをエクスポートするBlazorアプリを作れるようになります。

IronXLの紹介

IronXLは、XLS、XLSX、XLSM、XLTX、CSVを含む多くの形式でExcelファイルを扱えるよう設計された強力な.NET Excelライブラリです。Microsoft OfficeやExcel Interopを必要とせずに、開発者がプログラム上でExcelデータを読み書きや操作が可能です。

IronXLを使用すると、Excelワークブックを作成、読み込み、保存したり、個々のセルや範囲にデータを読み書きできます。 また、書式設定数式グラフ、ピボットテーブルなどの高度な機能もサポートしています。 IronXLはさまざまな.NETフレームワークに対応しており、C#やVB.NETといった人気のある言語で使用できます。

ExcelファイルをCSVに変換する手順

Blazorプロジェクトの設定

まず、Blazorサーバープロジェクトを新しく作成する必要があります。 Visual Studioを開き、新しいプロジェクトを作成し、"Blazor Server App"テンプレートを選択します。 プロジェクトに名前をつけ、"作成"をクリックします。

プロジェクトが作成されたら、Pagesフォルダーを開き、Index.razorファイルを探します。ここに、Blazorコンポーネントが追加され、ファイルアップロードと変換の処理が行われるコードが書かれます。

IronXLのインストール

コードを書き始める前に、IronXLライブラリをインストールする必要があります。 Visual Studioのパッケージマネージャーコンソールを開き、次のコマンドを実行します。

Install-Package IronXL.Excel

このコマンドは、BlazorプロジェクトにIronXLライブラリをインストールします。 これでコードを書き始める準備が整いました!

ファイルアップロードコンポーネントの作成

まず、ユーザーが既存のExcelファイルをアップロードできるように基本的なファイルアップロードコンポーネントを作成します。その後、Microsoft.AspNetCore.Components.Forms名前空間からInputFileコンポーネントが追加されます。 次のコードを@page ""の行の下にIndex.razorファイルに追加します。

@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}";
        }
    }
}

このコードは、ExcelスプレッドシートがInputFileコンポーネントを使用してアップロードされたときにトリガーされるOnInputFileChangeと呼ばれるプライベートメソッドを定義します。 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}";
        }
    }
}

さらにコードを細かく見ていきましょう:

  1. ファイルがアップロードされるとOnInputFileChangeメソッドがトリガーされ、InputFileChangeEventArgsオブジェクトが渡されます。 このオブジェクトには、アップロードされたファイルの名前やサイズなどの情報が含まれています。
  2. オリジナルのファイル名をページに表示するために、originalFileNameという変数に格納します。
  3. try-catchブロック内で、新しいMemoryStreamオブジェクトを作成し、アップロードされたファイルの内容を読み込みます。 usingステートメントは、メモリストリームがもう必要なくなったときに適切に破棄されることを保証します。
  4. awaitキーワードを使用して、アップロードされたファイルの内容を非同期でメモリストリームにコピーします。 これにより、ファイルを読み込んでいる間もこのアプリケーションが応答性を保ちます。
  5. 次に、WorkBook.Loadメソッドを使用して、メモリストリームの内容をWorkBookオブジェクトに読み込みます。 このオブジェクトはシート、セル、データを含むExcel全体のワークブックを表します。
  6. 変換されたCSVファイルの出力ファイル名を指定します。このケースでは、"sample.csv"という名前を使用しています。
  7. WorkBookオブジェクトのSaveAsCsvメソッドを使用して、指定された出力ファイル名でワークブックをCSVファイルとして保存します。
  8. 変換が成功すると、変換が完了したことを示すメッセージが表示されます。 エラーが発生した場合は、例外をキャッチしてエラーメッセージを表示します。

アプリケーションのテスト

Blazorアプリケーションが完成したので、テストする時が来ました! F5を押して、Visual Studioでアプリケーションを実行します。 アプリケーションが実行されると、ページ上にファイルアップロードボタンが表示されるはずです。

BlazorでCSVにエクスポートする方法、図1:Blazorアプリケーションの実行 Blazorアプリケーションの実行

ボタンをクリックし、アップロードするExcelファイルを選択します。 InputFileコンポーネントのaccept属性にリストされているファイル形式が受け付けられます。

BlazorでCSVにエクスポートする方法、図2:Excelファイルの選択 Excelファイルの選択

ファイルを選択した後、アプリケーションはファイルを読み込み、IronXLを使用してCSV形式に変換し、指定された出力ファイル名で変換後のファイルを保存します。 変換の状態とオリジナルのファイル名を表示するメッセージが表示されるはずです。

BlazorでCSVにエクスポートする方法、図3:変換の状態 変換の状態

おめでとうございます! IronXLを使用してExcelファイルをCSV形式にエクスポートできるBlazorアプリケーションの構築に成功しました。 次のスクリーンショットは、このプログラムの出力を示しています。

BlazorでCSVにエクスポートする方法、図4:出力Excelファイル 出力されたExcelファイル

結論

このチュートリアルでは、IronXLを使用してExcelファイルをCSV形式にエクスポートできるBlazorアプリケーションを構築する方法を示しました。 ファイルアップロードコンポーネントの作成、ファイルのアップロード処理、およびIronXLの強力な機能を使用したExcelファイルのCSV形式への変換の方法を説明しました。

BlazorアプリケーションにIronXLを組み込むことで、Excel関連の様々なタスクを簡単に扱うことができ、データのインポート、操作、エクスポートが可能になります。 これは、プロジェクトに多くの可能性を開き、ユーザーによりリッチな体験を提供するのに役立ちます。 IronXLライブラリを使用してBlazorでCSVをExcelに変換できます。

IronXLは無料トライアルを提供しており、購入を検討する前にその機能と性能を試すことができます。 トライアル期間終了後、IronXLのライセンスは$799から開始します。

よくある質問

BlazorアプリケーションでExcelファイルをCSV形式に変換するにはどうすればよいですか?

IronXLを使用して、BlazorアプリケーションでExcelファイルをCSV形式に変換できます。まず、Blazorサーバープロジェクトをセットアップし、パッケージマネージャーコンソールを介してIronXLをインストールし、`InputFile`コンポーネントを使用してファイルアップロードコンポーネントを作成します。次に、Excelファイルをメモリストリームに読み込み、IronXLを使用してWorkBookオブジェクトにロードし、SaveAsCsvメソッドを使用してCSVとしてエクスポートします。

BlazorアプリケーションでIronXLを使用する目的は何ですか?

IronXLは、Microsoft OfficeやExcel Interopを必要とせずにExcelデータを扱うためにBlazorアプリケーションで使用されます。これは、開発者がプログラム的にExcelデータを読み取り、操作、およびエクスポートできるようにします。データのインポート、書式設定、ExcelファイルのCSVなどのフォーマットへの変換などの機能を可能にします。

ExcelファイルをCSVに変換するBlazorアプリケーションをテストできますか?

はい、Visual Studioで実行してBlazorアプリケーションをテストできます。ファイルアップロードコンポーネントを使用してExcelファイルを選択します。このアプリケーションは、選択したファイルをIronXLを使用してCSVに変換し、変換状況に関するフィードバックを提供します。

Excel InteropよりもIronXLを使用する利点は何ですか?

Excel InteropよりもIronXLを使用することで、Microsoft OfficeがインストールされていなくてもExcelファイルを操作できる、複数のExcelフォーマット(XLS、XLSX、CSV)のサポート、.NETアプリケーションとの互換性が向上し、パフォーマンスと展開の容易さが得られるなどの利点があります。

BlazorプロジェクトにIronXLをインストールするにはどうすればよいですか?

BlazorプロジェクトにIronXLをインストールするには、Visual Studioでパッケージマネージャーコンソールを開き、Install-Package IronXL.Excelコマンドを実行します。これにより、ライブラリがインストールされ、Excelファイルをプログラム的に操作できるようになります。

Blazorでの変換に対応したIronXLのExcelファイル形式は何ですか?

IronXLは、Blazorでの変換に対応したさまざまなExcelファイル形式をサポートしています。これには、.xls、.xlsx、.xlsm、.xltx、および.csvが含まれ、アプリケーション内でのExcelデータの柔軟な処理を可能にします。

Blazorアプリケーションでファイルアップロードコンポーネントを作成するにはどうすればよいですか?

Blazorアプリケーションでファイルアップロードコンポーネントを作成するには、Microsoft.AspNetCore.Components.Formsの`InputFile`コンポーネントを使用します。このコンポーネントにより、ユーザーがファイルをアップロードでき、そのファイルをExcelからCSVへの変換などのタスクに必要なIronXLを使用して処理できます。

IronXLの無料トライアルはありますか?

はい、IronXLは購入前にその機能と能力を試すことができる無料トライアルを提供しています。トライアル期間終了後は、プロジェクトのニーズに応じたさまざまなライセンスオプションを選択できます。

カーティス・チャウ
テクニカルライター

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

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