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

ASP.NET CoreでExcelファイルを開く方法

このチュートリアルでは、ASP.NET CoreアプリケーションでIronXLライブラリを使用してExcelファイルを開く方法をご紹介します。 Excelファイルを読み取る基本的な手順をカバーし、それらからデータを表示し、修正したデータをファイルに戻して保存する方法を説明します。

IronXLとは?

IronXL は、Microsoft ExcelやOffice Interopの依存性を必要とせずにExcelドキュメントを操作する機能を提供する.NETのExcelライブラリです。 これは、.NET Frameworkと.NET Coreの両方をサポートし、数行のコードでExcelファイルを作成、操作、および読み取ることができます。 Excelファイルの読み取りに関する詳細なチュートリアルについては、このExcelチュートリアルをご参照ください。

IronXL library can read and write Excel documents, extract data from them, manipulate the data, and even create new Excel files from scratch. IronXLは、.XLS形式だけでなく、Microsoftがスプレッドシートを表現するために開発したXMLベースのファイル形式である.XLSXに対応しています。

前提条件

コードに入る前に、以下を確認してください:

  1. .NET Core 3.1以上がインストールされていること。
  2. .NET開発に適したIDE (Microsoft Visual Studioが推奨されます)。
  3. ASP.NET CoreとRazor Pagesの基本的な理解。

新しい.NET Coreプロジェクトを作成する

  1. Microsoft Visual Studioを開き、「新しいプロジェクトの作成」を選択します。
  2. プロジェクトテンプレートのリストから「ASP.NET Core Web App」を選んで「次へ」をクリックします。
  3. プロジェクトに名前を付けます。たとえば、「Open_ExcelFile.NET_Core」を入力し、場所を選んで「次へ」をクリックします。
  4. ターゲットフレームワークとして「.NET Core」を選択し、バージョンとして「ASP.NET Core 3.1以上」を選択します。 「プロジェクトテンプレート」セクションで「Webアプリケーション」を選択し「作成」をクリックします。

IronXLパッケージをインストールする

次のステップでは、新しく作成したプロジェクトにIronXLパッケージをインストールします:

  1. ソリューションエクスプローラーのプロジェクトを右クリックし、「NuGetパッケージの管理」を選択します。
  2. 「参照」タブで「IronXL」を検索し、IronXL.Excelパッケージの「インストール」をクリックします。

ASP .NET CoreでExcelファイルを開く方法、図1: NuGetパッケージマネージャUIでIronXLパッケージを検索してインストールする NuGetパッケージマネージャUIでIronXLパッケージを検索してインストールする

  1. パッケージのインストールを待ちます。

これでASP.NET Coreプロジェクトが設定され、IronXLライブラリがインストールされ使用可能になりました。

Razorページを作成する

次に、Excelファイルを開くコードを書くためのRazorページを作成します。

  1. ソリューションエクスプローラーの「Pages」フォルダを右クリックし、「追加」>「Razorページ」を選択します。
  2. ページ名に「ExcelOpener」と入力し「追加」をクリックします。

ASP .NET CoreでExcelファイルを開く方法、図2: 新しいRazorページを作成する 新しいRazorページを作成する

これにより、ExcelOpener.cshtmlExcelOpener.cshtml.cs の2つのファイルが作成されます。

ExcelOpener.cshtml ファイルにはページのHTMLマークアップが含まれ、ExcelOpener.cshtml.cs ファイルにはページのC#コードビハインドが含まれます。

Excelファイルを読み取る

それでは、コードに入っていきます。 提供されたExcelOpenerModelクラスはRazorページモデルです。 このクラスには、Excelファイルから読み取られたデータを格納するためのList<List<string>>型のプロパティDataがあります。

public List<List<string>> Data { get; set; }

public ExcelOpenerModel()
{
    Data = new List<List<string>>();
}
public List<List<string>> Data { get; set; }

public ExcelOpenerModel()
{
    Data = new List<List<string>>();
}
Public Property Data() As List(Of List(Of String))

'INSTANT VB WARNING: The following constructor is declared outside of its associated class:
'ORIGINAL LINE: public ExcelOpenerModel()
Public Sub New()
	Data = New List(Of List(Of String))()
End Sub
$vbLabelText   $csharpLabel

OnGetメソッドで、IronXLを使用してExcelファイルをロードし、デフォルトのワークシート(ワークブック内の最初のシート)からデータを読み取ります。 各行はList<string>として表現され、これらのリストすべてがDataプロパティに追加されます。

public void OnGet()
{
    try
    {
        Data = new List<List<string>>();
        // Load your Excel file
        var workbook = WorkBook.Load(@"C:\Users\Administrator\Documents\Loan.xlsx");

        // Select your Worksheet
        WorkSheet sheet = workbook.DefaultWorkSheet;

        for (int i = 0; i < sheet.RowCount; i++)
        {
            var row = new List<string>();
            for (int j = 0; j < sheet.ColumnCount; j++)
            {
                row.Add(sheet.GetCellAt(i, j).Value.ToString());
            }
            Data.Add(row);
        }
    }
    catch (Exception ex)
    {
        // Handle exceptions here
        Console.WriteLine(ex.Message);
    }
}
public void OnGet()
{
    try
    {
        Data = new List<List<string>>();
        // Load your Excel file
        var workbook = WorkBook.Load(@"C:\Users\Administrator\Documents\Loan.xlsx");

        // Select your Worksheet
        WorkSheet sheet = workbook.DefaultWorkSheet;

        for (int i = 0; i < sheet.RowCount; i++)
        {
            var row = new List<string>();
            for (int j = 0; j < sheet.ColumnCount; j++)
            {
                row.Add(sheet.GetCellAt(i, j).Value.ToString());
            }
            Data.Add(row);
        }
    }
    catch (Exception ex)
    {
        // Handle exceptions here
        Console.WriteLine(ex.Message);
    }
}
Public Sub OnGet()
	Try
		Data = New List(Of List(Of String))()
		' Load your Excel file
		Dim workbook = WorkBook.Load("C:\Users\Administrator\Documents\Loan.xlsx")

		' Select your Worksheet
		Dim sheet As WorkSheet = workbook.DefaultWorkSheet

		For i As Integer = 0 To sheet.RowCount - 1
			Dim row = New List(Of String)()
			For j As Integer = 0 To sheet.ColumnCount - 1
				row.Add(sheet.GetCellAt(i, j).Value.ToString())
			Next j
			Data.Add(row)
		Next i
	Catch ex As Exception
		' Handle exceptions here
		Console.WriteLine(ex.Message)
	End Try
End Sub
$vbLabelText   $csharpLabel

主要メソッドの説明

  • WorkBook.Load(filepath): このメソッドは指定されたファイルパスからExcelドキュメントをロードします。 Excelシートを読み込んで読み取るのに役立ちます。
  • workbook.DefaultWorkSheet: このプロパティは、Excelスプレッドシートのデフォルト(最初の)Excelワークシートを取得します。
  • sheet.GetCellAt(i, j).Value.ToString(): 指定された行と列のインデックス上のセルを取得し、その値を文字列に変換します。 これは、行と列のインデックスに基づいてExcelファイル内の特定のセルや範囲にアクセスするためのインデックスメソッドの一例です。

短い説明

ExcelOpener.cshtml.cs ファイルでは、ExcelOpenerModelという名前のクラスがRazorページモデルを表します。 このクラスにはDataという名前のList<List<string>>型のプロパティが含まれており、Excelファイルからのデータを保持します。

OnGetメソッドは、ページが要求されたときに呼び出され、Excelファイルからのデータの読み取りを担当します。IronXLを使用してExcelファイルをロードし、デフォルトのワークシートを選択し、行や列を反復してDataプロパティを埋めます。

Excelファイルを書き込む

ExcelOpenerModelクラスのOnPostメソッドは、Excelファイルへの修正を保存するために使用されます。まずExcelファイルをロードし、デフォルトのワークシートを取得します。 次に、Dataからの値をワークシートのセルに書き込み、ワークブックを新しいファイルに保存します。

public void OnPost()
{
    try
    {
        // Load your Excel file
        var workbook = WorkBook.Load(@"C:\Users\Administrator\Documents\Loan.xlsx");

        // Select your Worksheet
        var sheet = workbook.DefaultWorkSheet;

        for (int i = 0; i < Data.Count; i++)
        {
            for (int j = 0; j < Data[i].Count; j++)
            {
                sheet.SetCellValue(i, j, Data[i][j]);
            }
        }

        // Save the Excel file
        var filename = @"C:\ModifiedData.xlsx";
        workbook.SaveAs(filename);
    }
    catch (Exception ex)
    {
        // Handle exceptions here
        Console.WriteLine(ex.Message);
    }
}
public void OnPost()
{
    try
    {
        // Load your Excel file
        var workbook = WorkBook.Load(@"C:\Users\Administrator\Documents\Loan.xlsx");

        // Select your Worksheet
        var sheet = workbook.DefaultWorkSheet;

        for (int i = 0; i < Data.Count; i++)
        {
            for (int j = 0; j < Data[i].Count; j++)
            {
                sheet.SetCellValue(i, j, Data[i][j]);
            }
        }

        // Save the Excel file
        var filename = @"C:\ModifiedData.xlsx";
        workbook.SaveAs(filename);
    }
    catch (Exception ex)
    {
        // Handle exceptions here
        Console.WriteLine(ex.Message);
    }
}
Public Sub OnPost()
	Try
		' Load your Excel file
		Dim workbook = WorkBook.Load("C:\Users\Administrator\Documents\Loan.xlsx")

		' Select your Worksheet
		Dim sheet = workbook.DefaultWorkSheet

		For i As Integer = 0 To Data.Count - 1
			Dim j As Integer = 0
			Do While j < Data(i).Count
				sheet.SetCellValue(i, j, Data(i)(j))
				j += 1
			Loop
		Next i

		' Save the Excel file
		Dim filename = "C:\ModifiedData.xlsx"
		workbook.SaveAs(filename)
	Catch ex As Exception
		' Handle exceptions here
		Console.WriteLine(ex.Message)
	End Try
End Sub
$vbLabelText   $csharpLabel

主要メソッドの説明

  • sheet.SetCellValue(i, j, Data[i][j]): このメソッドは、指定された行と列のインデックス上のセルの値を設定します。
  • workbook.SaveAs(filepath): このメソッドは、指定されたファイルパスにExcelワークブックを保存します。

短い説明

OnPostメソッドは、フォームの送信時に呼び出され、変更されたデータをExcelファイルに保存します。Excelファイルをロードし、デフォルトのワークシートを選択し、フォームから受け取った変更されたデータに基づいてセルの値を更新します。

Excelデータ編集用HTMLフォーム

ExcelOpener.cshtml では、Excelファイルからのデータを表示および編集するためのフォームが定義されています。各セルの値はテキスト入力フィールドに表示されます。 編集後、「保存」ボタンをクリックするとフォームが送信され、OnPostメソッドがトリガーされ、変更がExcelファイルに保存されます。

@page
@model Open_Excel_File_.NET_Core.Pages.ExcelOpenerModel

<form method="post">
    <table class="table table-bordered table-striped">
        <!-- Bootstrap classes for tables -->
        @for (int i = 0; i < Model.Data.Count; i++)
        {
            <tr>
                @for (int j = 0; j < Model.Data[i].Count; j++)
                {
                    <td>
                        <input type="text" class="form-control" name="Data[@i][@j]" value="@Model.Data[i][j]" /> <!-- Bootstrap class for form controls -->
                    </td>
                }
            </tr>
        }
    </table>

    <input type="submit" class="btn btn-primary" value="Save" /> <!-- Bootstrap classes for buttons -->
</form>
@page
@model Open_Excel_File_.NET_Core.Pages.ExcelOpenerModel

<form method="post">
    <table class="table table-bordered table-striped">
        <!-- Bootstrap classes for tables -->
        @for (int i = 0; i < Model.Data.Count; i++)
        {
            <tr>
                @for (int j = 0; j < Model.Data[i].Count; j++)
                {
                    <td>
                        <input type="text" class="form-control" name="Data[@i][@j]" value="@Model.Data[i][j]" /> <!-- Bootstrap class for form controls -->
                    </td>
                }
            </tr>
        }
    </table>

    <input type="submit" class="btn btn-primary" value="Save" /> <!-- Bootstrap classes for buttons -->
</form>
HTML

ページへのナビゲーション

_Layout.cshtmlでは、ページへのリンクがナビゲーションメニューに追加されています。 このリンクをクリックすることで、Excelを開くページに移動します。

<li class="nav-item">
    <a class="nav-link text-dark" asp-area="" asp-page="/ExcelOpener">ExcelOpener</a>
</li>
<li class="nav-item">
    <a class="nav-link text-dark" asp-area="" asp-page="/ExcelOpener">ExcelOpener</a>
</li>
HTML

アプリケーションの実行と出力の説明

Visual Studioの「ビルド」ボタンをクリックするか、Ctrl + Shift + Bショートカットを使用してアプリケーションをビルドします。 Visual Studioで「開始」ボタンをクリックするか、F5を押してアプリケーションを実行します。

アプリケーションが実行されたら、ナビゲーションバーの対応するリンクをクリックして「ExcelOpener」ページに移動します。 ページはExcelからのデータを表形式で表示します。

テーブル内のデータを変更し、「保存」ボタンをクリックすることで、変更をExcelファイルに保存できます。

ASP .NET CoreでExcelファイルを開く方法、図3: WebアプリケーションでExcelデータを表示 WebアプリケーションでExcelデータを表示

このチュートリアルでは、ASP.NET CoreアプリケーションでIronXLを使用してExcelファイルを開く方法を説明しました。 IronXLは、Excelファイルを読み取って操作するためのシンプルで便利な方法を提供します。 IronXLのドキュメントを参照して、より高度な機能と機能性を探求できます。

IronXLは無料トライアルを提供しており、その能力を評価することができます。 プロジェクトに役立つと感じた場合は、$799からライセンスを購入できます。

よくある質問

ASP.NET CoreアプリケーションでExcelファイルを開くにはどうすればよいですか?

IronXLライブラリを使用してASP.NET CoreアプリケーションでExcelファイルを開くことができます。最初にNuGetからIronXLをインストールし、WorkBook.Loadを使用してExcelファイルをロードします。シートを選択して行と列を反復処理することでデータにアクセスできます。

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

IronXLはMicrosoft ExcelやOffice Interopの依存関係を必要とせず、サーバー環境でMicrosoft Officeをインストールすることが難しい場合に理想的です。.NET Frameworkと.NET Coreの両方をサポートし、.XLSおよび.XLSX形式を扱えます。

Razor Pagesを使用してWebアプリケーション内でExcelデータを表示するにはどうすればよいですか?

ExcelデータをWebアプリケーションで表示するには、IronXLを使用してExcelデータをロードし読み取るRazorページを作成します。HTMLフォームを使用して各セルのデータをテキスト入力フィールドにレンダリングし、ユーザーがWebインターフェース内でデータを表示および編集できるようにします。

Excel操作のためのASP.NET Coreプロジェクトを設定するために必要なものは何ですか?

Excel操作のためのASP.NET Coreプロジェクトを設定するには、.NET Core 3.1以上、Microsoft Visual StudioのようなIDE、およびASP.NET CoreとRazor Pagesの基本的な理解が必要です。Excelファイルを操作するためにNuGetからIronXLパッケージをインストールします。

ASP.NET CoreでExcelファイルを編集し変更を保存するにはどうすればよいですか?

RazorページにHTMLフォームを使用してユーザーがデータを変更できるようにすることで、Excelファイルを編集し変更を保存できます。sheet.SetCellValueのようなIronXLメソッドを使用してデータを更新し、workbook.SaveAsで変更されたExcelファイルを保存します。

Excelファイル操作のためのRazorページの設定に関わるステップは何ですか?

Razorページを設定するには、ASP.NET Coreプロジェクト内に新しいRazorページを作成します。Razorページを使用してIronXLでExcelデータを読み込み、Webフォームで表示し、フォーム送信を処理してExcelファイルに変更を保存します。

ASP.NET CoreでExcelファイルが読み込めない場合のトラブルシューティング方法は?

Excelファイルが読み込めない場合は、ファイルパスがアプリケーションから正しくアクセスできることを確認してください。IronXLが正しくインストールされていること、ファイル形式がサポートされていることを確認します。問題を示す可能性のある例外やエラーメッセージをチェックしてください。

IronXLライブラリを購入する前に試すことはできますか?

はい、IronXLはその機能を評価するための無料のトライアルバージョンを提供しています。ライセンスを購入する前に、それがニーズに合うかを確認するためにこのトライアルを利用できます。

Curtis Chau
テクニカルライター

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

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