透かしなしで本番環境でテストしてください。
必要な場所で動作します。
30日間、完全に機能する製品をご利用いただけます。
数分で稼働させることができます。
製品トライアル期間中にサポートエンジニアリングチームへの完全アクセス
この包括的なチュートリアルでは、ASP.NET MVCとIronXLを使用してExcelビューアを構築する方法を示します。 このビューアーにより、ユーザーはウェブページから直接Excelファイルを表示、編集、およびナビゲートできるようになります。
IronXLは、Excel操作に関連する多くの機能を提供する強力な.NETライブラリです。 これは、.NET開発者が様々なファイル形式(XLS、XLSX、CSVなど)でExcelドキュメントを作成、操作、読み取ることができる簡素化されたAPIを提供します。
IronXLを使用すると、Excelファイルを読み取り、データを抽出し、ワークシートを追加または編集し、行や列を作成または変更し、数式を適用して、変更を保存するなど、さまざまなことができます。 これらすべての操作は、あなたのマシンにMicrosoft Excelがインストールされている必要はなく実行できます。
IronXL は、画像、スタイリング、条件付き書式、その他の複雑な Excel 機能をサポートしており、.NET Excel 操作のための包括的なソリューションを提供します。 それは、ASP.NET MVCアプリケーションのデータソースおよびスプレッドシートの要件を処理するのに最適です。 IronXLライブラリは、ASP.NET WebアプリケーションでExcelファイルを表示するために使用されます。
まず、Visual Studioで新しいASP.NET MVCプロジェクトを作成しましょう。
Visual Studioを開きます。
ファイル > 新規作成 > プロジェクトをクリックします。
新しいプロジェクトウィンドウで、ASP.NET Web Application (.NET Framework) テンプレートを選択します。
Visual Studioで新しいASP.NET Webアプリケーションを作成する
プロジェクトにExcelViewerという名前を付け、プロジェクトの場所を選択して作成ボタンをクリックします。
プロジェクトを構成する
この記事では、Excelビューア機能をこのASP.NET MVCアプリケーションに実装することに焦点を当てます。
Excelファイル形式(.xls、.xlsx、.csvなど)を扱うために、IronXLはExcelドキュメントを読み込み、読み取り、書き込み、さらにはExcelデータを修正するための包括的な機能を提供します。 数式、画像、書式設定など多くの機能をサポートしています。
ソリューション エクスプローラーでプロジェクトを右クリックし、NuGet パッケージの管理に移動します**。
NuGetパッケージマネージャーでIronXL.Excelを検索します。
インストールをクリックしてプロジェクトに追加します。
NuGet パッケージ マネージャの UI で IronXL パッケージを検索してインストールする
以下のコマンドを使用して、Package Manager コンソールから IronXL をインストールすることもできます:
Install-Package IronXL.Excel
パッケージ マネージャー コンソールからIronXLパッケージをインストールする
IronXLがインストールされたので、次のステップに進みましょう。
Excelモデル
最初のステップはExcelデータのモデルを作成することです。 ExcelModel
クラスは単一のExcelシートを表し、シート名とExcelシートに存在するデータを含みます。
namespace Excel_File_Viewer_IronXL.Models
{
public class ExcelModel
{
public string SheetName { get; set; }
public List<string []> Data { get; set; }
}
}
namespace Excel_File_Viewer_IronXL.Models
{
public class ExcelModel
{
public string SheetName { get; set; }
public List<string []> Data { get; set; }
}
}
Namespace Excel_File_Viewer_IronXL.Models
Public Class ExcelModel
Public Property SheetName() As String
Public Property Data() As List(Of String ())
End Class
End Namespace
ExcelModel
は、SheetName
と Data
の2つのプロパティで定義されています。 SheetName
は、各Excelシートの名前を保持するシンプルな文字列です。 Data
は、Excel シート内の各行のデータを格納するための文字列配列のリストです。
ExcelViewModel
次に、ExcelViewModel
を作成しましょう。 このモデルは、ファイル、メッセージ、およびファイル内のすべてのシートのデータを表すExcelModel
のリストを含むラッパーです。
using Microsoft.AspNetCore.Http;
using System.Collections.Generic;
namespace Excel_File_Viewer_IronXL.Models
{
public class ExcelViewModel
{
public IFormFile File { get; set; }
public string Message { get; set; }
public List<ExcelModel> ExcelData { get; set; }
}
}
using Microsoft.AspNetCore.Http;
using System.Collections.Generic;
namespace Excel_File_Viewer_IronXL.Models
{
public class ExcelViewModel
{
public IFormFile File { get; set; }
public string Message { get; set; }
public List<ExcelModel> ExcelData { get; set; }
}
}
Imports Microsoft.AspNetCore.Http
Imports System.Collections.Generic
Namespace Excel_File_Viewer_IronXL.Models
Public Class ExcelViewModel
Public Property File() As IFormFile
Public Property Message() As String
Public Property ExcelData() As List(Of ExcelModel)
End Class
End Namespace
このクラスはビューモデルとして使用されます。 ファイルアップロード用のIFormFile
プロパティ、任意のメッセージを表示するためのMessage
文字列、および取得したExcelデータを保存するためのList<ExcelModel>
があります。
ExcelController
を作成します。次に、新しいExcelController
を作成します。 ここがマジックが起きる場所です! Excel ファイルは IronXL の WorkBook.Load
関数を使用して読み込まれ、ワークシートをループし、データを抽出して ExcelViewModel
に追加します。
using Excel_File_Viewer_IronXL.Models;
using IronXL;
using System.Collections.Generic;
using System.Web.Mvc;
using System;
using System.Linq;
public class ExcelController : Controller
{
// GET: Excel
public ActionResult Index()
{
var model = new ExcelViewModel();
// Define the file path
string filePath = Server.MapPath("~/App_Data/Test.xlsx");
// Replace 'Test.xlsx' with your file name
List<ExcelModel> data = new List<ExcelModel>();
try
{
// Load workbook directly from a file path
var workbook = WorkBook.Load(filePath);
foreach (var worksheet in workbook.WorkSheets)
{
data.Add(new ExcelModel
{
SheetName = worksheet.Name,
Data = worksheet.Rows.Select(r => r.ToArray().Select(c => c.Value.ToString()).ToArray()).ToList()
});
}
model.ExcelData = data;
model.Message = "File processed successfully!";
}
catch (Exception ex)
{
model.Message = $"Error occurred while processing file: {ex.Message}";
}
return View(model);
}
}
using Excel_File_Viewer_IronXL.Models;
using IronXL;
using System.Collections.Generic;
using System.Web.Mvc;
using System;
using System.Linq;
public class ExcelController : Controller
{
// GET: Excel
public ActionResult Index()
{
var model = new ExcelViewModel();
// Define the file path
string filePath = Server.MapPath("~/App_Data/Test.xlsx");
// Replace 'Test.xlsx' with your file name
List<ExcelModel> data = new List<ExcelModel>();
try
{
// Load workbook directly from a file path
var workbook = WorkBook.Load(filePath);
foreach (var worksheet in workbook.WorkSheets)
{
data.Add(new ExcelModel
{
SheetName = worksheet.Name,
Data = worksheet.Rows.Select(r => r.ToArray().Select(c => c.Value.ToString()).ToArray()).ToList()
});
}
model.ExcelData = data;
model.Message = "File processed successfully!";
}
catch (Exception ex)
{
model.Message = $"Error occurred while processing file: {ex.Message}";
}
return View(model);
}
}
Imports Excel_File_Viewer_IronXL.Models
Imports IronXL
Imports System.Collections.Generic
Imports System.Web.Mvc
Imports System
Imports System.Linq
Public Class ExcelController
Inherits Controller
' GET: Excel
Public Function Index() As ActionResult
Dim model = New ExcelViewModel()
' Define the file path
Dim filePath As String = Server.MapPath("~/App_Data/Test.xlsx")
' Replace 'Test.xlsx' with your file name
Dim data As New List(Of ExcelModel)()
Try
' Load workbook directly from a file path
Dim workbook = WorkBook.Load(filePath)
For Each worksheet In workbook.WorkSheets
data.Add(New ExcelModel With {
.SheetName = worksheet.Name,
.Data = worksheet.Rows.Select(Function(r) r.ToArray().Select(Function(c) c.Value.ToString()).ToArray()).ToList()
})
Next worksheet
model.ExcelData = data
model.Message = "File processed successfully!"
Catch ex As Exception
model.Message = $"Error occurred while processing file: {ex.Message}"
End Try
Return View(model)
End Function
End Class
ここで、ExcelViewModel
を初期化し、IronXL を使用して WorkBook
をロードし、各 WorkSheet
をループし、各 WorkSheet
に対して、ワークシートの名前とデータを持つ ExcelModel
を作成します。 ExcelModel
は、次に ExcelViewModel
内の ExcelData
リストに追加されます。
次のExcelファイルのデータがロードされ表示されます:
サンプルのExcelファイル
基本的なコードスニペットは以下の通りです:
public ActionResult ExportViewAsPdf()
{
var Renderer = new IronPdf.ChromePdfRenderer();
var pdf = Renderer.RenderHtmlAsPdf(RenderViewToString("ViewName"));
var OutputPath = Path.Combine(Server.MapPath("~/IronPdfPdf.pdf"));
pdf.SaveAs(OutputPath);
return File(OutputPath, "application/pdf", "ExportedView.pdf");
}
public ActionResult ExportViewAsPdf()
{
var Renderer = new IronPdf.ChromePdfRenderer();
var pdf = Renderer.RenderHtmlAsPdf(RenderViewToString("ViewName"));
var OutputPath = Path.Combine(Server.MapPath("~/IronPdfPdf.pdf"));
pdf.SaveAs(OutputPath);
return File(OutputPath, "application/pdf", "ExportedView.pdf");
}
Public Function ExportViewAsPdf() As ActionResult
Dim Renderer = New IronPdf.ChromePdfRenderer()
Dim pdf = Renderer.RenderHtmlAsPdf(RenderViewToString("ViewName"))
Dim OutputPath = Path.Combine(Server.MapPath("~/IronPdfPdf.pdf"))
pdf.SaveAs(OutputPath)
Return File(OutputPath, "application/pdf", "ExportedView.pdf")
End Function
あなたのViews/Excelディレクトリに、新しいHTMLファイルIndex.cshtml
を作成してExcelデータを表示します。 次に、Bootstrapのnav-tabs
を使用して、Excelファイル内の各シートを表現します。各シートは個別のタブになり、タブの内容はシートのデータになります。
@model Excel_File_Viewer_IronXL.Models.ExcelViewModel
@{
ViewBag.Title = "Index";
}
<h2>Excel File Viewer</h2>
@if (Model.ExcelData != null)
{
<ul class="nav nav-tabs" id="myTab" role="tablist">
@for (int i = 0; i < Model.ExcelData.Count; i++)
{
<li class="nav-item">
<a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle="tab" href="#content-@i" role="tab" aria-controls="content-@i" aria-selected="@(i == 0)">
@Model.ExcelData [i].SheetName
</a>
</li>
}
</ul>
<div class="tab-content" id="myTabContent">
@for (int i = 0; i < Model.ExcelData.Count; i++)
{
<div class="tab-pane fade @(i == 0 ? "show active" : "")" id="content-@i" role="tabpanel" aria-labelledby="tab-@i">
<table class="table table-bordered">
@foreach (var row in Model.ExcelData [i].Data)
{
<tr>
@foreach (var cell in row)
{
<td>@cell</td>
}
</tr>
}
</table>
</div>
}
</div>
}
@model Excel_File_Viewer_IronXL.Models.ExcelViewModel
@{
ViewBag.Title = "Index";
}
<h2>Excel File Viewer</h2>
@if (Model.ExcelData != null)
{
<ul class="nav nav-tabs" id="myTab" role="tablist">
@for (int i = 0; i < Model.ExcelData.Count; i++)
{
<li class="nav-item">
<a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle="tab" href="#content-@i" role="tab" aria-controls="content-@i" aria-selected="@(i == 0)">
@Model.ExcelData [i].SheetName
</a>
</li>
}
</ul>
<div class="tab-content" id="myTabContent">
@for (int i = 0; i < Model.ExcelData.Count; i++)
{
<div class="tab-pane fade @(i == 0 ? "show active" : "")" id="content-@i" role="tabpanel" aria-labelledby="tab-@i">
<table class="table table-bordered">
@foreach (var row in Model.ExcelData [i].Data)
{
<tr>
@foreach (var cell in row)
{
<td>@cell</td>
}
</tr>
}
</table>
</div>
}
</div>
}
model ReadOnly Property () As Excel_File_Viewer_IronXL.Models.ExcelViewModel
ViewBag.Title = "Index"
End Property
'INSTANT VB TODO TASK: The following line could not be converted:
(Of h2) Excel File Viewer</h2> [if](Model.ExcelData != Nothing)
If True Then
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <ul class="nav nav-tabs" id="myTab" role="tablist"> for(int i = 0; i < Model.ExcelData.Count; i++)
"myTab" role="tablist"> [for](Integer i = 0; i < Model.ExcelData.Count; i)
If True Then
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <ul class="nav nav-tabs" id="myTab" role
"nav nav-tabs" id="myTab" role
<ul class="nav nav-tabs" id
i += 1
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <li class="nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle="tab" href="#content-@i" role="tab" aria-controls="content-@i" aria-selected="@(i == 0)"> @Model.ExcelData [i].SheetName </a> </li>
"content-@i" aria-selected="@(i == 0)"> Model.ExcelData (i).SheetName </a> </li>
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <li class="nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle="tab" href="#content-@i" role="tab" aria-controls="content-@i" aria-selected
"tab" aria-controls="content-@i" aria-selected
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <li class="nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle="tab" href="#content-@i" role="tab" aria-controls
"#content-@i" role="tab" aria-controls
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <li class="nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle="tab" href="#content-@i" role
"tab" href="#content-@i" role
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <li class="nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle="tab" href
"tab-@i" data-toggle="tab" href
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <li class="nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle
"nav-link @(i == 0 ? "active" : "")" id="tab-@i" data-toggle
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <li class="nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id
"nav-item"> <a class="nav-link @(i == 0 ? "active" : "")" id
<li class="nav-item"> <a class
End If
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: </ul> <div class="tab-content" id="myTabContent"> for(int i = 0; i < Model.ExcelData.Count; i++)
"tab-content" id="myTabContent"> [for](Integer i = 0; i < Model.ExcelData.Count; i)
If True Then
</ul> <div class="tab-content" id
i += 1
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <div class="tab-pane fade @(i == 0 ? "show active" : "")" id="content-@i" role="tabpanel" aria-labelledby="tab-@i"> <table class="table table-bordered"> foreach(var row in Model.ExcelData [i].Data)
"tab-@i"> <table class="table table-bordered"> foreach(var row in Model.ExcelData (i).Data)
If True Then
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <div class="tab-pane fade @(i == 0 ? "show active" : "")" id="content-@i" role="tabpanel" aria-labelledby="tab-@i"> <table class
"tabpanel" aria-labelledby="tab-@i"> <table class
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <div class="tab-pane fade @(i == 0 ? "show active" : "")" id="content-@i" role="tabpanel" aria-labelledby
"content-@i" role="tabpanel" aria-labelledby
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <div class="tab-pane fade @(i == 0 ? "show active" : "")" id="content-@i" role
"tab-pane fade @(i == 0 ? "show active" : "")" id="content-@i" role
<div class="tab-pane fade @(i == 0 ? "show active" : "")" id
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
' (Of tr) @foreach(var cell in row)
' {
' <td> @cell</td>
' }
</tr>
End If
</table> </div>
End If
</div>
End If
このコード例では、nav nav-tabs
がタブのリストを生成し、それぞれがExcelファイルのシートを表します。対応するタブのコンテンツは、該当するシートのデータをテーブル形式で表示します。 一部の変更を加えることで、Excelファイルを手動で選択するためのブラウズボタンが追加されます。
すべての手順に従ってプロジェクトのセットアップが完了したら、実行する時です。 Excelファイルのシート名にちなんで名付けられたタブが表示されているウェブページが見えるはずです。タブをクリックすると、それぞれのシートのデータがテーブル形式で表示されます。
エクセルビューア
IronXLを使用してASP.NET Excelビューアを作成しました! この強力なライブラリにより、ユーザーはExcelファイルをより効率的かつ管理しやすい方法で操作できます。 IronXLを使用することで、.NET環境でのExcelファイルの取り扱いがこれまでになく簡単になります。
IronXL は無料トライアルを提供しており、初期費用なしでその広範な機能を探索して理解することができます。テストしてニーズに最適なソリューションであると判断した後、ライセンスは$749から始まります。