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

Razor PagesでExcelファイルを生成する方法

Razor Pagesは、ウェブページを構築するためのモダンなアプローチを提供します。 Razor Pagesでは、ウェブページをレンダリングするソースコードは、サーバー側のページによって生成されるのではなく、C#で記述されています。

Excelファイルを効率的に操作するためには、Microsoft Officeを必要とせず、複数の.NETバージョンをサポートするIronXLライブラリが、PowerPointファイルで注目されるPOI JavaプロジェクトのNPOIパッケージやOffice Interopなどよりも推奨されます。IronXLは豊富な機能を備え、使いやすいライブラリです。

この記事では、Razor PagesでIronXL C#ライブラリを使用して、ダミーデータと行見出しを含むExcelスプレッドシートを生成およびエクスポートする方法を示します。

IronXL: C# Excelライブラリ

IronXLは、大量のデータセットを並列処理で操作するためのメソッドと関数を提供するC# Excelライブラリです。 内部動作を理解する必要がなく、XLSとXLSXファイルの両方をサポートしているため、ユーザーフレンドリーです。

IronXLは、Microsoft OfficeをインストールすることなくExcelの式やオフィス文書をインポート、エクスポート、作成するのに最適です。

IronXLを使用してRazor PagesでExcelファイルをインポートおよびエクスポートする方法を学びましょう。

Razor PagesでExcelファイルを生成

Razor PagesでExcelシートを作成するには、Visual Studioを開き、ASP.NET Core Webアプリケーションを作成し、IronXLをインストールします。

前提条件

Razor PagesでExcelファイルを作成するためのセットアップ要件:

  1. Visual Studio(最新バージョン)
  2. .NET Framework 6または7
  3. Visual Studioでの.NET Core Webアプリケーション

IronXLライブラリのインストール

NuGetパッケージマネージャーコンソールを使用してIronXLをインストール。 .NET Core Webアプリケーションにライブラリをインストールするためにこのコマンドを入力:

Install-Package IronXL.Excel

Excelファイル生成のためのコード

コードの書き方です。 "Index.cs"をPagesフォルダーで開き、次のメソッドを追加:

public FileResult OnPostExport()
{
    // Create a new WorkBook with XLSX format
    WorkBook workBook = new WorkBook(IronXL.ExcelFileFormat.XLSX);
    // Create a new WorkSheet named "data"
    WorkSheet workSheet = workBook.CreateWorkSheet("data");

    // Add headers to the new worksheet
    workSheet["A1"].Value = "Product EN";
    workSheet["B1"].Value = "SKU";
    workSheet["C1"].Value = "Customer";

    // Make header text bold
    workSheet["A1:C1"].Style.Font.Bold = true;

    // Add dummy data to the worksheet
    workSheet["A2"].Value = "Iron Rods";
    workSheet["A3"].Value = "Mobile Phones";
    workSheet["A4"].Value = "Chargers";

    workSheet["B2"].Value = "105";
    workSheet["B3"].Value = "285";
    workSheet["B4"].Value = "301";

    workSheet["C2"].Value = "Adam";
    workSheet["C3"].Value = "Ellen";
    workSheet["C4"].Value = "Tom";

    // Convert the WorkBook to a byte array Stream for download
    return File(workBook.ToStream().ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Grid.xlsx");
}
public FileResult OnPostExport()
{
    // Create a new WorkBook with XLSX format
    WorkBook workBook = new WorkBook(IronXL.ExcelFileFormat.XLSX);
    // Create a new WorkSheet named "data"
    WorkSheet workSheet = workBook.CreateWorkSheet("data");

    // Add headers to the new worksheet
    workSheet["A1"].Value = "Product EN";
    workSheet["B1"].Value = "SKU";
    workSheet["C1"].Value = "Customer";

    // Make header text bold
    workSheet["A1:C1"].Style.Font.Bold = true;

    // Add dummy data to the worksheet
    workSheet["A2"].Value = "Iron Rods";
    workSheet["A3"].Value = "Mobile Phones";
    workSheet["A4"].Value = "Chargers";

    workSheet["B2"].Value = "105";
    workSheet["B3"].Value = "285";
    workSheet["B4"].Value = "301";

    workSheet["C2"].Value = "Adam";
    workSheet["C3"].Value = "Ellen";
    workSheet["C4"].Value = "Tom";

    // Convert the WorkBook to a byte array Stream for download
    return File(workBook.ToStream().ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Grid.xlsx");
}
Public Function OnPostExport() As FileResult
	' Create a new WorkBook with XLSX format
	Dim workBook As New WorkBook(IronXL.ExcelFileFormat.XLSX)
	' Create a new WorkSheet named "data"
	Dim workSheet As WorkSheet = workBook.CreateWorkSheet("data")

	' Add headers to the new worksheet
	workSheet("A1").Value = "Product EN"
	workSheet("B1").Value = "SKU"
	workSheet("C1").Value = "Customer"

	' Make header text bold
	workSheet("A1:C1").Style.Font.Bold = True

	' Add dummy data to the worksheet
	workSheet("A2").Value = "Iron Rods"
	workSheet("A3").Value = "Mobile Phones"
	workSheet("A4").Value = "Chargers"

	workSheet("B2").Value = "105"
	workSheet("B3").Value = "285"
	workSheet("B4").Value = "301"

	workSheet("C2").Value = "Adam"
	workSheet("C3").Value = "Ellen"
	workSheet("C4").Value = "Tom"

	' Convert the WorkBook to a byte array Stream for download
	Return File(workBook.ToStream().ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Grid.xlsx")
End Function
$vbLabelText   $csharpLabel

このコードでは、新しいExcel WorkBook が作成され、1つの WorkSheet を含みます。 シートはダミーデータで埋められ、生成されたファイルは以下の方法でサーバーに応答されます:

  • WorkBookStream に変換され、ファイルとしてダウンロードします。
  • MIMEタイプが設定されます。
  • ファイルダウンロードの名前が指定されます。

Excelファイルをダウンロードするボタンを作成

"Index.cshtml"の既存のコードを次のもので置き換えます:

@page
@model IndexModel
@{
    ViewData["Title"] = "Home page";
}

<div class="text-center">
    <h1 class="display-4">IronXL Generate Excel File</h1>
    <p class="m-5">IronXL is an Excel Library for C# that allows developers to read and edit Excel data from XLS and XLSX documents without using Microsoft.Office.Interop.Excel</p>
    <form method="post" asp-page-handler="Export">
        <button class="btn btn-success p-3">Generate Excel File!</button>
    </form>
</div>
@page
@model IndexModel
@{
    ViewData["Title"] = "Home page";
}

<div class="text-center">
    <h1 class="display-4">IronXL Generate Excel File</h1>
    <p class="m-5">IronXL is an Excel Library for C# that allows developers to read and edit Excel data from XLS and XLSX documents without using Microsoft.Office.Interop.Excel</p>
    <form method="post" asp-page-handler="Export">
        <button class="btn btn-success p-3">Generate Excel File!</button>
    </form>
</div>
HTML

このHTMLは、asp-page-handler が "Export" に設定されたフォームを作成します。これにより、ユーザーが "Generate Excel File!" ボタンをクリックしてブラウザダウンロードをトリガーすると、アプリケーションはExcelファイルをローカルマシンにエクスポートできます。

プロジェクトの実行

プロジェクトを実行すると、ブラウザに画面が表示されます。 緑のボタンをクリックして、Excelファイルをダウンロードします。

Razor PagesでのExcelファイル生成の方法, 図1: IronXL Excelシート生成 IronXL Excelシート生成

"Generate Excel File!" をクリックした後、ファイルがダウンロードされます。

Razor PagesでのExcelファイル生成の方法, 図2: IronXLダウンロードファイル IronXLダウンロードファイル

生成されたExcelファイルを開く

生成されたExcelファイルの内容は、コードの出力と完璧に一致しています。 生成されたExcelファイルのスナップショットは以下に表示されます。

Razor PagesでのExcelファイル生成の方法, 図3: IronXL生成ファイル IronXL生成ファイル

IronXLは競合製品よりも優れている

IronXLは、NPOIのような制限なしにXLSとXLSXフォーマットでの作業に優れています。NPOIはJavaベースであるために遅いですが、IronXLはC#です。 ASP.NET Coreアプリケーションで大量もしくは複数のスプレッドシートを生成する際は、POIではなくIronXLを選択してください。

IronXLはMicrosoft Officeを必要とせずにExcelファイルを作成および編集できます。Microsoft Interopとは異なり、IronXLはExcel操作やエクスポートのためにMicrosoft ExcelのActiveXを呼び出す必要はありません。 それはまた、CSVファイルをExcelフォーマットにエクスポートすることも可能です。

IronXLは、人気のあるフォーマット間の変換数式の挿入、グラフの追加、画像の挿入など、Excelファイルとのやり取りに関する幅広い機能を提供します。

結論

この記事は、Microsoft Excel ActiveXを必要とせずにRazor PagesでExcelファイルを生成し、ファイルダウンロードを容易にするためのIronXLの使用方法を紹介します。

Excelファイルを作成するその他のチュートリアルをもっと見る

IronXLは非商用開発において無料です。 市販テストのための無料トライアルが利用可能です。 料金プランを見て、さらに詳しい価格とライセンスの情報をご覧ください。

よくある質問

Interopを使用せずにRazor PagesでExcelファイルを生成するにはどうすれば良いですか?

Interopを使用せずにRazor PagesでExcelファイルを生成するには、IronXLライブラリを利用できます。このライブラリを使用すると、Microsoft Officeが不要で、C#で直接Excelファイルを作成および操作できます。WorkBookを作成し、WorkSheetにデータを追加します。

Razor PagesプロジェクトにIronXLをインストールするために必要なステップは何ですか?

Razor PagesプロジェクトにIronXLをインストールするには、Visual StudioのNuGetパッケージマネージャーコンソールを使用できます。Install-Package IronXL.Excelコマンドを実行して、プロジェクトにライブラリを追加します。

IronXLを使用してRazor Pagesアプリケーションからデータをエクスポートすることはできますか?

はい、IronXLはRazor Pagesアプリケーションからデータをエクスポートするために使用できます。データをExcel形式に変換し、そのデータをRazor Pagesを使用してクライアントにダウンロード可能ファイルとしてストリーミングできます。

Excelファイルを生成するためにIronXLをMicrosoft Interopよりも使用する利点は何ですか?

IronXLは、Microsoft Interopと比較して、より高速なパフォーマンス、Microsoft Officeのインストール不要、および並列処理を通じた大規模データセットの効率的な処理が可能であることなどの利点を提供します。

Razor PagesでIronXLを使用して大規模なExcelデータセットを処理することは可能ですか?

はい、IronXLは大規模なExcelデータセットを効率的に処理できます。並列処理をサポートしているため、広範なデータを扱う際のパフォーマンスと速度を向上させることができます。

IronXLは異なるExcelファイル形式をサポートしていますか?

IronXLはXLSおよびXLSXファイル形式の両方をサポートし、データのインポート、エクスポート、およびフォーマットを含む包括的なExcelファイル操作を可能にします。

開発でIronXLを無料で使用するオプションはありますか?

IronXLは非商業的な開発に対して無料で利用可能です。商業利用に関しては、さまざまな価格プランが用意されており、試用版も製品テストのために提供されています。

Razor PagesでIronXLを使用してExcelファイルのダウンロードをトリガーするにはどうすればよいですか?

Razor PagesでIronXLを使用してExcelファイルのダウンロードをトリガーするには、WorkBookを作成し、データで満たした後、バイト配列に変換します。このバイト配列をRazor PagesのFileメソッドを使ってユーザーにダウンロード可能なファイルとしてストリーミングします。

IronXLがNPOIのような他のライブラリより好まれる理由は何ですか?

IronXLは、ネイティブのC#実装であるため、NPOIのようなライブラリよりしばしば好まれます。これは、より高速なパフォーマンス、使いやすさ、Javaコンポーネントへの依存がないことを提供し、ASP.NET Coreアプリケーションに理想的です。

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

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

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