ライブ環境でテストする
ウォーターマークなしで本番環境でテストしてください。
必要な場所でいつでも動作します。
この包括的なチュートリアルでは、ASP.NET MVCとIronXLを使用してExcelビューアを構築する方法を示します。 このビューアーにより、ユーザーはウェブページから直接Excelファイルを表示、編集、およびナビゲートできるようになります。
IronXLは、Excel操作に関連する機能を多数提供する強力な.NETライブラリです。 .NET開発者が書き込み、操作しやすいシンプルなAPIを提供します。Excelドキュメントを読み取るXLS、XLSX、CSV などのさまざまなファイル形式で。
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フレームワーク)テンプレート
新しい ASP.NET Web アプリケーションを Visual Studio で作成する
プロジェクトにExcelViewerという名前を付け、プロジェクトの場所を選択して、Createボタンをクリックします。
プロジェクトを構成する
この記事では、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がインストールされたので、次のステップに進みましょう。
ExcelModel(エクセルモデル)
最初のステップは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
は2つのプロパティ、SheetName
とData
で定義されています。 SheetName
は、各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
このクラスはビューモデルとして使用されます。 それは(n) ファイルアップロードのための IFormFile
プロパティ、メッセージを表示するための Message
文字列、そして `List
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
ここでは、初期化します。(n)ExcelViewModel
を読み込んでくださいWorkBook
IronXLを使用して、各列をループするワークシート
そして、各 WorkSheet
に対して、私たちは WorkSheet
を作成します(n)シートの名前とデータを含む 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ファイルのシート名にちなんで名付けられたタブが表示されているウェブページが見えるはずです。タブをクリックすると、それぞれのシートのデータがテーブル形式で表示されます。
Excelビューア
IronXL を使用して ASP.NET Excel ビューアーを作成しました。! この強力なライブラリにより、ユーザーはExcelファイルをより効率的かつ管理しやすい方法で操作できます。 IronXLを使用することで、.NET環境でのExcelファイルの取り扱いがこれまでになく簡単になります。
IronXLを提供します無料試用前払い費用なしで、その膨大な機能性を探索し理解することができます。テストを行い、ニーズに完璧に合うソリューションであると確認した場合、ライセンスは $Lite License
から開始します。
9つの .NET API製品 オフィス文書用