IRONXLの使用

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

リーガン・パン
リーガン・パン
2023年7月22日
更新済み 2024年8月23日
共有:

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

IronXLとは何ですか?

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

IronXLライブラリは、Excelドキュメントの読み書き、データの抽出、データの操作、さらには新しいExcelファイルをゼロから作成することも可能です。 IronXLは.XLS形式だけでなく、.XLSXにも対応しており、これはMicrosoftが開発したスプレッドシートを表現するためのXMLベースのファイル形式です。

前提条件

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

  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 アプリ」を選択し、「次へ」をクリックします。

  3. プロジェクトに名前を付けます。例えば、「Open_Excel_File_.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 パッケージを検索してインストールする

  3. パッケージがインストールされるのを待ちます。

    ASP.NET Coreプロジェクトのセットアップが完了し、IronXLライブラリがインストールされ、使用準備が整いました。

Razorページを作成

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

  1. ソリューションエクスプローラーで「Pages」フォルダーを右クリックし、「追加」 > 「Razor Page」を選択します。

  2. 「ExcelOpener」とページ名に入力し、「追加」をクリックしてください。

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

    新しいRazerページを作成する

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

    ExcelOpener.cshtml ファイルにはページの HTML マークアップが含まれており、ExcelOpener.cshtml.cs ファイルにはページ用の C# バックエンドコードが含まれています。

Excelファイルの読込

コードに飛び込みましょう。 提供されたExcelOpenerModelクラスは、Razorページモデルです。 このクラスには、Excelファイルから読み取ったデータを格納するために使用されるDataプロパティとしてList<List<string>>が含まれています。

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);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

主なメソッドの説明

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

簡単な説明

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

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

エクセルファイルの作成

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ファイルをロードし、デフォルトのワークシートを選択し、フォームから受け取った修正データに基づいてセルの値を更新します。

エクセルデータ編集用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>
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

ページへのナビゲート

_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で「Build」ボタンをクリックするか、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はその機能を評価するための無料トライアルを提供しています。 プロジェクトに役立つ場合は、$749からのライセンスを購入できます。

リーガン・パン
ソフトウェアエンジニア
レーガンはリーディング大学で電子工学の学士号を取得しました。Iron Softwareに入社する前の仕事では、一つのタスクに集中して取り組んでいました。Iron Softwareでは、営業、技術サポート、製品開発、マーケティングのいずれにおいても広範な業務に携わることが最も楽しいと感じています。彼は、Iron Softwareライブラリを開発者がどのように使用しているかを理解し、その知識を使ってドキュメントを継続的に改善し、製品を開発することを楽しんでいます。
< 以前
IronXLを使用してExcelファイルを操作する方法: .NET Excel ライブラリ
次へ >
データを失わずにExcelのセルを結合する方法