ASP.NET 에서 Excel 파일을 보는 방법
이 포괄적인 튜토리얼은 ASP.NET MVC와 IronXL을 사용하여 Excel 뷰어를 구축하는 방법을 시연할 것입니다. 이 뷰어를 통해 사용자는 웹 페이지에서 직접 Excel 파일을 표시, 편집 및 탐색할 수 있습니다.
IronXL이란 무엇인가요?
IronXL은 Excel 작업과 관련된 기능을 다수 제공하는 강력한 .NET 라이브러리입니다. 이를 통해 .NET 개발자가 간단한 API를 사용하여 다양한 파일 형식(XLS, XLSX, CSV 등)을 포함한 Excel 문서를 작성, 조작 및 읽을 수 있습니다.
IronXL을 사용하면 Excel 파일을 읽고, 데이터를 추출, 워크시트를 추가하거나 편집하고, 행과 열을 생성하거나 수정, 공식을 적용, 변경 사항을 저장하는 등 다양한 작업을 수행할 수 있습니다. 이 모든 작업은 컴퓨터에 Microsoft Excel을 설치하지 않고도 수행할 수 있습니다.
IronXL은 이미지, 스타일링, 조건부 서식 등 복잡한 Excel 기능을 지원하여 .NET Excel 작업에 대한 포괄적인 솔루션을 제공합니다. ASP.NET MVC 애플리케이션의 데이터 소스 및 스프레드 시트 요구 사항을 처리하기에 적합합니다. IronXL 라이브러리를 사용하여 ASP.NET 웹 애플리케이션에서 Excel 파일을 볼 수 있습니다.
필수 조건
- ASP.NET MVC에 대한 기본적인 이해
- 컴퓨터에 Visual Studio 설치
- IronXL 라이브러리 설치. 설치 가이드는 공식 문서에서 확인할 수 있습니다.
시작하기
먼저, Visual Studio에서 새로운 ASP.NET MVC 프로젝트를 생성해 보겠습니다.
- Visual Studio를 엽니다.
- 파일 > 새로 만들기 > 프로젝트를 클릭하세요.
-
새 프로젝트 창에서 ASP.NET 웹 애플리케이션 (.NET Framework) 템플릿을 선택하세요.
Visual Studio에서 새로운 ASP.NET 웹 애플리케이션 생성 -
프로젝트 이름을 ExcelViewer로 지정하고, 프로젝트 위치를 선택한 후 생성 버튼을 클릭하십시오.
프로젝트 구성
이 문서는 이 ASP.NET MVC 애플리케이션에서 Excel 뷰어 기능 구현에 중점을 두겠습니다.
프로젝트에 IronXL 추가하기
Excel 파일 형식(.xls, .xlsx, .csv 등)을 처리하기 위해, IronXL은 Excel 문서를 로드하고, 읽고, 쓰고, 수정할 수 있는 포괄적인 기능을 제공합니다. 공식, 이미지, 서식 등을 지원합니다.
- 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 NuGet 패키지 관리로 이동하세요.
- NuGet 패키지 관리자에서 IronXL.Excel을 검색하세요.
-
프로젝트에 추가하려면 설치를 클릭하세요.
NuGet 패키지 관리자 UI에서 IronXL 패키지를 검색하고 설치
패키지 관리자 콘솔에서 다음 명령을 사용하여 IronXL을 설치할 수도 있습니다:
Install-Package IronXL.Excel
패키지 관리자 콘솔에서 IronXL Install-Package
이제 IronXL이 설치되었으므로 다음 단계로 넘어가겠습니다.
모델 생성
ExcelModel
첫 번째 단계는 Excel 데이터에 대한 모델을 만드는 것입니다. ExcelModel 클래스는 단일 Excel 시트를 나타내며 Excel 시트에 있는 시트 이름과 데이터를 포함합니다.
namespace Excel_File_Viewer_IronXl.Models
{
public class ExcelModel
{
public string SheetName { get; set; }
// Data is a list of string arrays, each array represents a row in the sheet.
public List<string[]> Data { get; set; }
}
}
namespace Excel_File_Viewer_IronXl.Models
{
public class ExcelModel
{
public string SheetName { get; set; }
// Data is a list of string arrays, each array represents a row in the sheet.
public List<string[]> Data { get; set; }
}
}
Imports System.Collections.Generic
Namespace Excel_File_Viewer_IronXl.Models
Public Class ExcelModel
Public Property SheetName As String
' Data is a list of string arrays, each array represents a row in the sheet.
Public Property Data As List(Of String())
End Class
End Namespace
ExcelModel는 SheetName 및 Data 두 가지 속성으로 정의됩니다. 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; } // For uploading Excel file
public string Message { get; set; } // Message for storing success/error messages
public List<ExcelModel> ExcelData { get; set; } // List to store data from all sheets
}
}
using Microsoft.AspNetCore.Http;
using System.Collections.Generic;
namespace Excel_File_Viewer_IronXl.Models
{
public class ExcelViewModel
{
public IFormFile File { get; set; } // For uploading Excel file
public string Message { get; set; } // Message for storing success/error messages
public List<ExcelModel> ExcelData { get; set; } // List to store data from all sheets
}
}
Imports Microsoft.AspNetCore.Http
Imports System.Collections.Generic
Namespace Excel_File_Viewer_IronXl.Models
Public Class ExcelViewModel
Public Property File As IFormFile ' For uploading Excel file
Public Property Message As String ' Message for storing success/error messages
Public Property ExcelData As List(Of ExcelModel) ' List to store data from all sheets
End Class
End Namespace
이 클래스는 뷰 모델로 사용됩니다. 파일 업로드를 위한 IFormFile 속성, 어떤 메시지를 표시하기 위한 Message 문자열, 가져온 Excel 데이터를 저장하기 위한 List<ExcelModel>을 가지고 있습니다.
5. 데이터를 추출하기 위해 Excel 파일을 로드하려면 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 for the Excel file
string filePath = Server.MapPath("~/App_Data/Test.xlsx");
// List to store data for each sheet
List<ExcelModel> data = new List<ExcelModel>();
try
{
// Load workbook directly from a file path
var workbook = WorkBook.Load(filePath);
// Loop through all worksheets in the workbook
foreach (var worksheet in workbook.WorkSheets)
{
// Add each worksheet's name and data to the data list
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 for the Excel file
string filePath = Server.MapPath("~/App_Data/Test.xlsx");
// List to store data for each sheet
List<ExcelModel> data = new List<ExcelModel>();
try
{
// Load workbook directly from a file path
var workbook = WorkBook.Load(filePath);
// Loop through all worksheets in the workbook
foreach (var worksheet in workbook.WorkSheets)
{
// Add each worksheet's name and data to the data list
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 As New ExcelViewModel()
' Define the file path for the Excel file
Dim filePath As String = Server.MapPath("~/App_Data/Test.xlsx")
' List to store data for each sheet
Dim data As New List(Of ExcelModel)()
Try
' Load workbook directly from a file path
Dim workbook = WorkBook.Load(filePath)
' Loop through all worksheets in the workbook
For Each worksheet In workbook.WorkSheets
' Add each worksheet's name and data to the data list
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
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은 ExcelData 목록에 ExcelViewModel에 추가됩니다.
다음 Excel 파일의 데이터가 로드되고 표시될 것입니다:
샘플 Excel 파일
6. 뷰 생성
귀하의 Views/Excel 디렉토리에서 Excel 데이터를 표시하기 위한 새 HTML 파일 Index.cshtml을 만듭니다. 그런 다음 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>
}
이 코드 예제에서는 nav nav-tabs을 사용하여 Excel 파일의 시트를 나타내는 탭 목록을 생성합니다. 해당 탭 내용은 각각의 시트 데이터를 테이블 형식으로 표시합니다. 변경을 통해 Excel 파일을 수동으로 선택할 수 있는 찾아보기 버튼이 추가되었습니다.
프로그램 실행
모든 단계를 따르고 프로젝트를 올바르게 설정한 후에는 실행할 차례입니다. Excel 파일의 시트 이름을 따서 명명된 탭이 있는 웹 페이지를 볼 수 있어야 합니다. 탭을 클릭하면 해당 시트의 데이터가 테이블 형식으로 표시됩니다.
Excel 뷰어
결론
IronXL을 사용하여 ASP.NET Excel 뷰어를 막 생성했습니다! 이 강력한 라이브러리는 사용자가 Excel 파일을 보다 효율적이고 관리 가능한 방식으로 작업할 수 있도록 합니다. IronXL의 도움으로 .NET 환경에서 Excel 파일을 다루는 것이 그 어느 때보다 쉬워졌습니다.
IronXL은 무료 체험을 제공하여 선결제 없이 광범위한 기능을 탐색하고 이해할 수 있습니다. 테스트 후 필요에 맞는 완벽한 솔루션임을 확인하면 $999부터 라이선스가 시작됩니다.
자주 묻는 질문
ASP.NET MVC를 사용하여 Excel 뷰어를 어떻게 만들 수 있나요?
ASP.NET MVC를 사용하여 Excel 뷰어를 만들려면 Visual Studio에서 새 프로젝트를 설정하고 NuGet 패키지 관리자를 통해 IronXL 라이브러리를 추가하면 됩니다. 이렇게 하면 웹 애플리케이션에서 Excel 파일을 직접 로드, 표시 및 조작할 수 있습니다.
엑셀 파일을 처리하는 ASP.NET MVC 프로젝트를 설정하는 단계는 무엇인가요?
Excel 파일을 처리하는 ASP.NET MVC 프로젝트를 설정하려면 Visual Studio를 열고 새 ASP.NET 웹 애플리케이션 프로젝트를 생성한 다음 NuGet 통해 IronXL 라이브러리를 설치합니다. 그런 다음 ExcelModel 및 ExcelViewModel 과 같은 모델을 구현하여 Excel 데이터를 관리하고 ExcelController 를 사용하여 Excel 파일을 로드하고 처리합니다.
ASP.NET 애플리케이션에서 여러 개의 Excel 시트를 동시에 표시할 수 있나요?
네, IronXL 사용하여 Excel 파일을 불러온 다음 Bootstrap의 nav-tabs 활용하여 각 시트에 대한 별도의 탭을 만들고 데이터를 표 형식으로 표시하면 ASP.NET 애플리케이션에서 여러 Excel 시트를 표시할 수 있습니다.
ASP.NET 에서 .NET 라이브러리를 사용하여 Excel 파일을 불러오고 처리하는 방법은 무엇인가요?
ASP.NET 에서는 IronXL의 WorkBook.Load 메서드를 사용하여 Excel 파일을 로드하고 처리할 수 있습니다. 이 메서드를 사용하면 Excel 파일을 읽고 워크시트를 순회하며 데이터를 추출하여 표시하거나 추가 조작을 수행할 수 있습니다.
.NET 환경에서 IronXL 사용하여 Excel 작업을 수행할 때의 장점은 무엇입니까?
IronXL 다양한 Excel 파일 형식을 지원하고, 이미지 및 조건부 서식과 같은 복잡한 Excel 기능을 조작할 수 있으며, 서버에 Microsoft Excel을 설치할 필요가 없다는 등 .NET 환경에서 Excel 작업을 수행하는 데 여러 가지 이점을 제공합니다.
ASP.NET Excel 뷰어를 만들 때 발생하는 일반적인 문제를 어떻게 해결할 수 있을까요?
ASP.NET Excel 뷰어를 만들 때 발생하는 일반적인 문제는 IronXL 라이브러리가 NuGet 통해 올바르게 설치되었는지 확인하고, 필요한 모든 모델과 컨트롤러가 제대로 구현되었는지 확인하고, Excel 파일이 지원되는 형식인지 확인하여 해결할 수 있습니다.
ASP.NET 웹 페이지에서 엑셀 파일을 직접 편집하는 것이 가능할까요?
네, IronXL 사용하면 ASP.NET 웹 페이지에서 Excel 파일을 직접 편집할 수 있습니다. 이 라이브러리를 사용하면 Excel 파일을 웹 애플리케이션에 불러와 데이터를 수정하고 변경 사항을 파일에 원활하게 저장할 수 있습니다.
IronXL 엑셀 파일 읽기 및 쓰기를 모두 지원합니까?
네, IronXL Excel 파일 읽기 및 쓰기를 모두 지원합니다. 기존 Excel 문서에서 데이터를 읽어오고, XLS, XLSX, CSV 등 다양한 형식의 Excel 파일에 새 데이터나 변경 사항을 쓸 수 있습니다.
ASP.NET MVC 애플리케이션에서 Excel 데이터를 관리하기 위해 어떤 모델을 만들어야 할까요?
ASP.NET MVC 애플리케이션에서는 개별 Excel 시트를 나타내는 ExcelModel 과 시트 모음을 관리하고 파일 업로드 및 메시지 처리를 담당하는 ExcelViewModel 과 같은 모델을 생성해야 합니다.
IronXL을 구매하기 전에 기능을 어떻게 테스트할 수 있나요?
IronXL의 기능을 테스트하려면 웹사이트에서 무료 평가판을 다운로드하세요. 이 평가판을 통해 초기 비용 부담 없이 .NET 애플리케이션에서 Excel 파일을 처리하는 IronXL 라이브러리의 기능을 살펴볼 수 있습니다.




