IronXL 사용하여 C#의 GridView에서 Excel로 내보내는 방법
GridView 데이터를 진정한 Excel 파일로 내보내는 것은 ASP.NET 웹 애플리케이션에서 가장 일반적인 요구 사항 중 하나입니다. 코드-55631--@@ 및 @@--코드-55632--@@를 사용하는 기존의 접근 방식은 사용자가 열려고 할 때 브라우저 경고 및 형식 오류를 유발하는 가짜 Excel 파일을 생성합니다. 이 가이드에서는 IronXL을 사용하여 GridView 데이터를 적절한 형식의 .xlsx 파일로 내보내는 방법을 보여줌으로써 개발자가 기존 방법으로 직면하는 골칫거리를 제거합니다.
전통적인 GridView 내보내기 접근 방식이 문제를 일으키는 이유는 무엇입니까?
ASP.NET C#의 GridView에서 Excel로 내보내는 일반적인 방법은 HTML을 렌더링하고 Response 헤더를 Content-Disposition 첨부 파일 이름 값으로 설정하는 것입니다. 이 접근 방식에서는 런타임 오류를 방지하기 위해 public override void VerifyRenderingInServerForm를 재정의해야 합니다. 결과 파일은 실제 Excel 파일이 아니며 .xls 확장자로 가장한 HTML이므로 사용자가 파일을 열면 Excel에서 경고 메시지를 표시합니다.
특히 전통적인 기술은 다음과 같은 단점이 있습니다:
- Excel은 매번 여는 시 '파일 형식과 확장명이 일치하지 않습니다' 경고를 표시합니다
- 데이터가 비정형 HTML로 저장되므로 서식 및 데이터 형식이 손실됩니다
- 해결 방법으로
VerifyRenderingInServerForm을 구현하여 프로젝트에 기술 부채를 추가해야 합니다 - 결과 파일은 적절한 셀 메타데이터가 부족하여 다운스트림 자동화 또는 보고 도구에 사용할 수 없습니다
IronXL은 서버에 Microsoft Office를 설치할 필요 없이 정품 .xlsx Excel 파일을 생성하여 이러한 문제를 해결합니다. 모든 스프레드시트 응용 프로그램에서 깨끗하게 열 수 있는 파일을 얻을 수 있으며, 적절한 데이터 형식, 스타일 및 OOXML 구조가 보존됩니다.
ASP.NET 프로젝트에 IronXL을 어떻게 설치합니까?
내보내기 로직을 작성하기 전에 NuGet 패키지 관리자를 사용하여 IronXL을 프로젝트에 추가하세요. Visual Studio에서 패키지 관리자 콘솔을 열고 다음을 실행하세요:
Install-Package IronXL.Excel
Install-Package IronXL.Excel
또는 NuGet 패키지 관리자 UI에서 IronXL.Excel를 검색하여 설치하세요. 일단 설치되면 모든 코드 비하인드 파일에서 IronXL 네임스페이스를 참조할 수 있습니다.
IronXL은 .NET Standard 2.0 이상을 타겟으로 하므로 최신 ASP.NET Core 프로젝트뿐만 아니라 고전적인 ASP.NET Framework 응용 프로그램에서도 작동합니다. 웹 서버에 COM interop, Office 설치 또는 추가 네이티브 종속성이 필요하지 않습니다.
자세한 내용은 IronXL 설치 가이드와 IronXL NuGet 패키지 페이지를 참조하십시오.
ASP.NET GridView를 내보내기 위해 어떻게 설정합니까?
코드-55642--@@ 페이지를 @@--코드-55643--@@ 컨트롤과 내보내기 버튼으로 작성하세요. 마크업은 표준 웹 폼입니다:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="GridViewExportTest.Default" %>
<!DOCTYPE html>
<html>
<head runat="server">
<title>Export GridView to Excel</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h2>IronXL GridView Export Demo</h2>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true"
HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White" CellPadding="5">
</asp:GridView>
<br />
<asp:Button ID="btnExport" runat="server" Text="Export to Excel (.xlsx)"
OnClick="btnExport_Click" />
</div>
</form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="GridViewExportTest.Default" %>
<!DOCTYPE html>
<html>
<head runat="server">
<title>Export GridView to Excel</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h2>IronXL GridView Export Demo</h2>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true"
HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White" CellPadding="5">
</asp:GridView>
<br />
<asp:Button ID="btnExport" runat="server" Text="Export to Excel (.xlsx)"
OnClick="btnExport_Click" />
</div>
</form>
</body>
</html>
이 마크업은 바인딩된 GridView와 내보내기를 트리거하는 버튼이 있는 간단한 페이지를 만듭니다. AutoGenerateColumns="true" 속성은 그리드가 바인딩된 DataTable에서 직접 열 이름을 읽음을 의미합니다.
GridView에 샘플 데이터 바인딩
코드 비하인드에서 DataTable를 그리드에 바인딩하고 나중에 내보내기 포스트백 시 사용할 수 있도록 Session에 저장하세요:
using System;
using System.Data;
using System.Web.UI;
using IronXL;
namespace GridViewExport
{
public partial class Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGridView();
}
}
private void BindGridView()
{
DataTable dt = new DataTable("Employees");
dt.Columns.Add("EmployeeID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Department", typeof(string));
dt.Columns.Add("Salary", typeof(decimal));
dt.Rows.Add(1, "John Smith", "Engineering", 75000);
dt.Rows.Add(2, "Sarah Johnson", "Marketing", 65000);
dt.Rows.Add(3, "Mike Wilson", "Sales", 70000);
dt.Rows.Add(4, "Emily Davis", "Engineering", 80000);
GridView1.DataSource = dt;
GridView1.DataBind();
// Store DataTable in Session for export postback
Session["GridData"] = dt;
}
}
}
using System;
using System.Data;
using System.Web.UI;
using IronXL;
namespace GridViewExport
{
public partial class Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGridView();
}
}
private void BindGridView()
{
DataTable dt = new DataTable("Employees");
dt.Columns.Add("EmployeeID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Department", typeof(string));
dt.Columns.Add("Salary", typeof(decimal));
dt.Rows.Add(1, "John Smith", "Engineering", 75000);
dt.Rows.Add(2, "Sarah Johnson", "Marketing", 65000);
dt.Rows.Add(3, "Mike Wilson", "Sales", 70000);
dt.Rows.Add(4, "Emily Davis", "Engineering", 80000);
GridView1.DataSource = dt;
GridView1.DataBind();
// Store DataTable in Session for export postback
Session["GridData"] = dt;
}
}
}
Imports System
Imports System.Data
Imports System.Web.UI
Imports IronXL
Namespace GridViewExport
Partial Public Class [Default]
Inherits Page
Protected Sub Page_Load(sender As Object, e As EventArgs)
If Not IsPostBack Then
BindGridView()
End If
End Sub
Private Sub BindGridView()
Dim dt As New DataTable("Employees")
dt.Columns.Add("EmployeeID", GetType(Integer))
dt.Columns.Add("Name", GetType(String))
dt.Columns.Add("Department", GetType(String))
dt.Columns.Add("Salary", GetType(Decimal))
dt.Rows.Add(1, "John Smith", "Engineering", 75000)
dt.Rows.Add(2, "Sarah Johnson", "Marketing", 65000)
dt.Rows.Add(3, "Mike Wilson", "Sales", 70000)
dt.Rows.Add(4, "Emily Davis", "Engineering", 80000)
GridView1.DataSource = dt
GridView1.DataBind()
' Store DataTable in Session for export postback
Session("GridData") = dt
End Sub
End Class
End Namespace
코드-55649--@@를 @@--코드-55650--@@에 저장하면 내보내기 버튼으로 트리거된 포스트백 중에 데이터베이스를 다시 쿼리하거나 데이터를 다시 빌드하는 것을 방지할 수 있습니다. 실제 응용 프로그램의 경우 하드코딩된 행을 Entity Framework 또는 ADO.NET 을 사용한 데이터베이스 쿼리로 교체하세요.
ASP .NET C#의 GridView에서 Excel로 내보내기: 깔끔한 C# 솔루션 이미지 1 - 샘플 GridView 데이터를 보여주는 UI
IronXL을 사용하여 GridView 데이터를 Excel로 어떻게 내보냅니까?
GridView 내보내기에 대한 깔끔한 접근 방식은 DataTable를 IronXL WorkBook로 변환하고 결과를 브라우저로 직접 스트리밍합니다. 다음은 완전한 내보내기 메서드입니다:
protected void btnExport_Click(object sender, EventArgs e)
{
ExportGridViewToExcel();
}
private void ExportGridViewToExcel()
{
DataTable dt = (DataTable)Session["GridData"];
// Create a workbook and load data from the DataTable
WorkBook workbook = WorkBook.Create();
WorkBook.LoadWorkSheetsFromDataSet(new DataSet { Tables = { dt } }, workbook);
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Apply header row formatting
var headerRange = worksheet["A1:D1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.Font.Size = 12;
headerRange.Style.SetBackgroundColor("#3AC0F2");
// Stream the file to the browser
string filename = "GridViewExport_" + DateTime.Now.ToString("yyyyMMdd") + ".xlsx";
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=" + filename);
workbook.SaveAsStream(Response.OutputStream, IronXL.Enum.FileFormat.Xlsx);
Response.Flush();
Response.End();
}
protected void btnExport_Click(object sender, EventArgs e)
{
ExportGridViewToExcel();
}
private void ExportGridViewToExcel()
{
DataTable dt = (DataTable)Session["GridData"];
// Create a workbook and load data from the DataTable
WorkBook workbook = WorkBook.Create();
WorkBook.LoadWorkSheetsFromDataSet(new DataSet { Tables = { dt } }, workbook);
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Apply header row formatting
var headerRange = worksheet["A1:D1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.Font.Size = 12;
headerRange.Style.SetBackgroundColor("#3AC0F2");
// Stream the file to the browser
string filename = "GridViewExport_" + DateTime.Now.ToString("yyyyMMdd") + ".xlsx";
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=" + filename);
workbook.SaveAsStream(Response.OutputStream, IronXL.Enum.FileFormat.Xlsx);
Response.Flush();
Response.End();
}
Imports System
Imports System.Data
Protected Sub btnExport_Click(sender As Object, e As EventArgs)
ExportGridViewToExcel()
End Sub
Private Sub ExportGridViewToExcel()
Dim dt As DataTable = DirectCast(Session("GridData"), DataTable)
' Create a workbook and load data from the DataTable
Dim workbook As WorkBook = WorkBook.Create()
WorkBook.LoadWorkSheetsFromDataSet(New DataSet With {.Tables = {dt}}, workbook)
Dim worksheet As WorkSheet = workbook.DefaultWorkSheet
' Apply header row formatting
Dim headerRange = worksheet("A1:D1")
headerRange.Style.Font.Bold = True
headerRange.Style.Font.Size = 12
headerRange.Style.SetBackgroundColor("#3AC0F2")
' Stream the file to the browser
Dim filename As String = "GridViewExport_" & DateTime.Now.ToString("yyyyMMdd") & ".xlsx"
Response.Clear()
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
Response.AddHeader("content-disposition", "attachment;filename=" & filename)
workbook.SaveAsStream(Response.OutputStream, IronXL.Enum.FileFormat.Xlsx)
Response.Flush()
Response.End()
End Sub
내보내기가 단계별로 작동하는 방법
프로세스는 세 가지 논리적인 단계로 분해됩니다:
- 데이터 테이블 검색 --
Session["GridData"]은 그리드에 바인딩된 것과 동일한DataTable을 반환합니다. 이렇게 하면 데이터베이스 호출을 중복하지 않게 됩니다. - 통합 문서 작성 --
WorkBook.LoadWorkSheetsFromDataSet는DataTable의DataSet에 열 머리글과 행 값을 적절한 셀에 복사하여 자동으로 워크시트 하나를 만듭니다. - 브라우저로 스트리밍 --
Content-Type을 OOXML MIME 유형으로 설정하고Response.OutputStream에 쓰면 올바른.xlsx확장자를 가진 브라우저 다운로드가 트리거됩니다. 임시 파일이 디스크에 기록되지 않습니다.
이는 기존의 HtmlTextWriter 접근 방식과는 근본적으로 다릅니다. 내보낸 파일은 Microsoft Excel이 기본적으로 사용하는 동일한 형식인 Open XML 형식을 사용하므로 경고 없이 열립니다.
데이터를 프로그래밍적으로 로드하는 방법에 대한 자세한 내용은 IronXL WorkBook 문서 및 C#에서 DataTable을 Excel로 내보내는 방법을 참조하세요.
ASP .NET C#의 GridView에서 Excel로 내보내기: 깔끔한 C# 솔루션: 이미지 2 - 내보낸 Excel 파일
엑셀 파일을 스트리밍하는 대신 디스크에 저장하려면 어떻게 해야 합니까?
사용자에게 다운로드 링크를 제공하기 전에 애플리케이션에서 내보내기를 서버에 보관해야 하는 경우 통합 문서를 Response.OutputStream로 스트리밍하지 말고 파일 경로에 저장하세요:
private void SaveExcelToDisk(WorkBook workbook, string exportFolder)
{
// Ensure the exports directory exists
if (!System.IO.Directory.Exists(exportFolder))
{
System.IO.Directory.CreateDirectory(exportFolder);
}
string timestamp = DateTime.Now.ToString("yyyyMMdd_HHmmss");
string filename = System.IO.Path.Combine(exportFolder, $"Report_{timestamp}.xlsx");
workbook.SaveAs(filename);
// Return the relative path for generating a download link
string relativePath = "~/Exports/Report_" + timestamp + ".xlsx";
Response.Write($"<script>alert('File saved to {relativePath}');</script>");
}
private void SaveExcelToDisk(WorkBook workbook, string exportFolder)
{
// Ensure the exports directory exists
if (!System.IO.Directory.Exists(exportFolder))
{
System.IO.Directory.CreateDirectory(exportFolder);
}
string timestamp = DateTime.Now.ToString("yyyyMMdd_HHmmss");
string filename = System.IO.Path.Combine(exportFolder, $"Report_{timestamp}.xlsx");
workbook.SaveAs(filename);
// Return the relative path for generating a download link
string relativePath = "~/Exports/Report_" + timestamp + ".xlsx";
Response.Write($"<script>alert('File saved to {relativePath}');</script>");
}
Private Sub SaveExcelToDisk(workbook As WorkBook, exportFolder As String)
' Ensure the exports directory exists
If Not System.IO.Directory.Exists(exportFolder) Then
System.IO.Directory.CreateDirectory(exportFolder)
End If
Dim timestamp As String = DateTime.Now.ToString("yyyyMMdd_HHmmss")
Dim filename As String = System.IO.Path.Combine(exportFolder, $"Report_{timestamp}.xlsx")
workbook.SaveAs(filename)
' Return the relative path for generating a download link
Dim relativePath As String = "~/Exports/Report_" & timestamp & ".xlsx"
Response.Write($"<script>alert('File saved to {relativePath}');</script>")
End Sub
스트리밍과 디스크 저장 선택하기
| 전략 | 장점 | 단점 | 최적의 용도 |
|---|---|---|---|
| 브라우저로 스트림 | 디스크 사용 없음, 즉시 전달 | 보관하거나 다시 보낼 수 없음 | 사용자 요청 시 내보내기 |
| 디스크에 저장 | 파일이 감사, 재다운로드 또는 이메일을 위해 보존됨 | 정리 작업 및 디스크 공간 관리 필요 | 예약된 보고서, 감사 기록 |
대부분의 대화형 웹 애플리케이션에서는 브라우저로 직접 스트리밍하는 것이 올바른 선택입니다. 파일을 이메일로 보내거나 규정을 위해 저장하거나 파일 관리 페이지에서 다시 다운로드할 수 있도록 해야 할 때는 디스크에 저장합니다.
내보낸 Excel 시트에 고급 서식을 적용하려면 어떻게 합니까?
IronXL은 셀 스타일, 열 너비, 숫자 형식 등을 세부적으로 제어할 수 있는 기능을 제공합니다. 다음 예는 전문가 수준의 스타일로 내보내는 방법을 보여줍니다:
private void ExportWithFormatting()
{
DataTable dt = new DataTable("Products");
dt.Columns.Add("Product", typeof(string));
dt.Columns.Add("Category", typeof(string));
dt.Columns.Add("Price", typeof(decimal));
dt.Columns.Add("InStock", typeof(bool));
dt.Rows.Add("Widget A", "Hardware", 29.99m, true);
dt.Rows.Add("Widget B", "Hardware", 49.99m, false);
dt.Rows.Add("Service Plan", "Support", 199.00m, true);
WorkBook workbook = WorkBook.Create();
WorkBook.LoadWorkSheetsFromDataSet(new DataSet { Tables = { dt } }, workbook);
WorkSheet sheet = workbook.WorkSheets[0];
// Style the header row
sheet["A1:D1"].Style.Font.Bold = true;
sheet["A1:D1"].Style.Font.Size = 13;
sheet["A1:D1"].Style.SetBackgroundColor("#2196F3");
sheet["A1:D1"].Style.Font.Color = "#FFFFFF";
// Apply currency format to the Price column (column C, rows 2 onwards)
sheet["C2:C4"].Style.NumberFormat.Format = "$#,##0.00";
// Auto-size all columns for readability
for (int col = 0; col < 4; col++)
{
sheet.AutoSizeColumn(col);
}
// Freeze the header row so it stays visible when scrolling
sheet.FreezePanes(0, 0, 1, 0);
workbook.SaveAs("FormattedExport.xlsx");
}
private void ExportWithFormatting()
{
DataTable dt = new DataTable("Products");
dt.Columns.Add("Product", typeof(string));
dt.Columns.Add("Category", typeof(string));
dt.Columns.Add("Price", typeof(decimal));
dt.Columns.Add("InStock", typeof(bool));
dt.Rows.Add("Widget A", "Hardware", 29.99m, true);
dt.Rows.Add("Widget B", "Hardware", 49.99m, false);
dt.Rows.Add("Service Plan", "Support", 199.00m, true);
WorkBook workbook = WorkBook.Create();
WorkBook.LoadWorkSheetsFromDataSet(new DataSet { Tables = { dt } }, workbook);
WorkSheet sheet = workbook.WorkSheets[0];
// Style the header row
sheet["A1:D1"].Style.Font.Bold = true;
sheet["A1:D1"].Style.Font.Size = 13;
sheet["A1:D1"].Style.SetBackgroundColor("#2196F3");
sheet["A1:D1"].Style.Font.Color = "#FFFFFF";
// Apply currency format to the Price column (column C, rows 2 onwards)
sheet["C2:C4"].Style.NumberFormat.Format = "$#,##0.00";
// Auto-size all columns for readability
for (int col = 0; col < 4; col++)
{
sheet.AutoSizeColumn(col);
}
// Freeze the header row so it stays visible when scrolling
sheet.FreezePanes(0, 0, 1, 0);
workbook.SaveAs("FormattedExport.xlsx");
}
Private Sub ExportWithFormatting()
Dim dt As New DataTable("Products")
dt.Columns.Add("Product", GetType(String))
dt.Columns.Add("Category", GetType(String))
dt.Columns.Add("Price", GetType(Decimal))
dt.Columns.Add("InStock", GetType(Boolean))
dt.Rows.Add("Widget A", "Hardware", 29.99D, True)
dt.Rows.Add("Widget B", "Hardware", 49.99D, False)
dt.Rows.Add("Service Plan", "Support", 199.0D, True)
Dim workbook As WorkBook = WorkBook.Create()
WorkBook.LoadWorkSheetsFromDataSet(New DataSet With {.Tables = {dt}}, workbook)
Dim sheet As WorkSheet = workbook.WorkSheets(0)
' Style the header row
sheet("A1:D1").Style.Font.Bold = True
sheet("A1:D1").Style.Font.Size = 13
sheet("A1:D1").Style.SetBackgroundColor("#2196F3")
sheet("A1:D1").Style.Font.Color = "#FFFFFF"
' Apply currency format to the Price column (column C, rows 2 onwards)
sheet("C2:C4").Style.NumberFormat.Format = "$#,##0.00"
' Auto-size all columns for readability
For col As Integer = 0 To 3
sheet.AutoSizeColumn(col)
Next
' Freeze the header row so it stays visible when scrolling
sheet.FreezePanes(0, 0, 1, 0)
workbook.SaveAs("FormattedExport.xlsx")
End Sub
IronXL에서 사용할 수 있는 서식 옵션
IronXL은 IronXL.Styles 네임스페이스를 통해 다양한 서식 속성을 노출합니다:
- 폰트 스타일링 -- 굵게, 기울임꼴, 밑줄, 글꼴 패밀리 및 크기
- 셀 배경색 -- 직접 허용되는 헥스 색상 문자열
- 숫자 및 날짜 형식 -- 통화, 백분율 및 날짜 패턴을 포함한 모든 Excel 형식 문자열
- 열 너비 - 수동 픽셀 너비 또는 자동 맞춤의 경우
AutoSizeColumn - 창 고정 -- 스크롤링하는 동안 헤더 행 또는 열 잠그기
- 셀 테두리 -- 모든 네 개의 테두리에 대해 설정 가능한 스타일 및 색상
- 셀 병합 -- 보고서 헤더를 위해 행 또는 열을 가로질러 셀 결합
전체 API 참조 내용은 IronXL 셀 스타일링 문서와 IronXL 숫자 서식 지정 문서를 참조하십시오.
ASP .NET C#의 GridView에서 Excel로 내보내기: 깔끔한 C# 솔루션 이미지 3 - 내보낸 형식의 Excel 문서
GridView 내보내기에서 대용량 데이터 세트를 처리하려면 어떻게 합니까?
GridView가 수천 개의 행에 바인딩될 때 몇 가지 기술은 내보내기를 빠르고 메모리 효율적으로 유지합니다:
페이징 및 서버 측 DataTable
GridView의 보이는 페이지만 내보내지 마세요. 데이터 소스에서 전체 데이터 집합을 DataTable로 검색한 후 WorkBook.LoadWorkSheetsFromDataSet로 호출하세요. IronXL은 워크북을 메모리에 여러 번 로드하지 않고 한 번의 패스에서 행을 기록하여 수만 개의 행에 적합합니다.
여러 워크시트 추가
DataTable에 여러 개의 DataSet 개체를 포함시켜 별도의 탭이 있는 통합 문서를 만들 수 있습니다:
DataSet exportSet = new DataSet();
exportSet.Tables.Add(GetEmployeeData()); // Sheet 1
exportSet.Tables.Add(GetDepartmentData()); // Sheet 2
exportSet.Tables.Add(GetSalaryReport()); // Sheet 3
WorkBook workbook = WorkBook.Create();
WorkBook.LoadWorkSheetsFromDataSet(exportSet, workbook);
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=MultiSheetReport.xlsx");
workbook.SaveAsStream(Response.OutputStream, IronXL.Enum.FileFormat.Xlsx);
Response.Flush();
Response.End();
DataSet exportSet = new DataSet();
exportSet.Tables.Add(GetEmployeeData()); // Sheet 1
exportSet.Tables.Add(GetDepartmentData()); // Sheet 2
exportSet.Tables.Add(GetSalaryReport()); // Sheet 3
WorkBook workbook = WorkBook.Create();
WorkBook.LoadWorkSheetsFromDataSet(exportSet, workbook);
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=MultiSheetReport.xlsx");
workbook.SaveAsStream(Response.OutputStream, IronXL.Enum.FileFormat.Xlsx);
Response.Flush();
Response.End();
Imports System.Data
Imports IronXL
Dim exportSet As New DataSet()
exportSet.Tables.Add(GetEmployeeData()) ' Sheet 1
exportSet.Tables.Add(GetDepartmentData()) ' Sheet 2
exportSet.Tables.Add(GetSalaryReport()) ' Sheet 3
Dim workbook As WorkBook = WorkBook.Create()
WorkBook.LoadWorkSheetsFromDataSet(exportSet, workbook)
Response.Clear()
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
Response.AddHeader("content-disposition", "attachment;filename=MultiSheetReport.xlsx")
workbook.SaveAsStream(Response.OutputStream, IronXL.Enum.FileFormat.Xlsx)
Response.Flush()
Response.End()
각 DataTable.TableName는 Excel에서 워크시트 탭 이름이 됩니다. 이 패턴은 여러 보기에서 관련 데이터를 결합하는 관리 보고서에 잘 작동합니다.
관련 가이드:
IronXL을 사용하여 GridView 내보내기의 주요 이점은 무엇입니까?
IronXL을 사용하여 GridView 데이터를 내보내는 것은 전통적인 HTML 랩핑 접근 방식에 비해 명확한 장점을 제공합니다:
- 정품 Excel 파일 -- 브라우저 경고나 오류 메시지 없이 열리는 유효한
.xlsx형식을 생성합니다 - Office 설치 불필요 -- Microsoft Excel 또는 Office interop 없이 모든 웹 서버에서 작동
VerifyRenderingInServerForm오버라이드 없음 -- 기존 코드를 복잡하게 만드는 상용구 해결 방법을 제거합니다- 전체 포맷팅 제어 -- 셀 스타일링, 숫자 형식 적용, 영역 고정, 전문적인 워크시트 프로그래밍 방식으로 생성
- 다중 시트 지원 -- 관련된 데이터 세트를 단일 워크북의 별도 탭으로 내보내기
- 크로스 플랫폼 호환성 -- Windows 및 Linux 서버에서 올바르게 작동, Docker 컨테이너 및 Azure App Service 포함
라이브러리는 NuGet에서 사용할 수 있으며 .NET 10을 포함한 모든 최신 .NET 타겟을 지원합니다. 또한 CSV 및 ODS와 같은 다른 형식의 읽기 및 쓰기도 지원하여, 애플리케이션의 모든 스프레드시트 요구사항에 대한 단일 종속성을 제공합니다.
다른 Excel 라이브러리와의 나란히 비교를 위해, IronXL vs ClosedXML 및 IronXL 기능 개요를 참조하세요.
다음 단계는 무엇입니까?
이제 기존 @@-CODE-55672--@@ GridView 내보내기를 깔끔하고 경고 없는 IronXL 구현으로 대체하는 데 필요한 모든 것을 갖추게 되었습니다. 다음 단계를 통해 앞으로 나아가십시오:
- 무료 체험판 사용해보기 -- IronXL의 무료 30일 체험판을 시작하고 신용카드가 필요 없으며 프로젝트에서 내보내기 코드를 테스트합니다.
- 더 많은 IronXL 튜토리얼 탐색 -- IronXL 블로그는 데이터 가져오기, 셀 수식, 차트 생성, Excel 템플릿 워크플로우를 다룹니다.
- IronXL API 문서에서는
WorkBook,WorkSheet및 스타일링 API의 모든 메서드를 다룹니다 - 라이센스 옵션 비교 -- IronXL 가격을 보고 팀 규모 및 배포 시나리오에 맞는 올바른 라이센스를 찾으세요.
- 질문하기 -- 예상치 못한 문제가 발생할 경우 Iron Software 지원팀과 커뮤니티 포럼을 이용하실 수 있습니다.
자주 묻는 질문
IronXL 사용하여 GridView 데이터를 Excel로 내보내야 하는 이유는 무엇입니까?
IronXL 사용하면 ASP.NET C#의 GridView에서 일반적인 HtmlTextWriter 및 StringWriter 사용 시 발생하는 브라우저 경고 및 서식 오류와 같은 문제 없이 정품 XLSX 파일을 생성할 수 있습니다.
HtmlTextWriter를 사용하여 Excel로 내보낼 때의 제한 사항은 무엇입니까?
HtmlTextWriter는 종종 브라우저 경고 및 서식 문제를 일으킬 수 있는 가짜 Excel 파일을 생성합니다. IronXL 실제 Excel 파일을 생성하여 이러한 문제를 해결합니다.
IronXL GridView에서 데이터를 내보내는 프로세스를 어떻게 개선합니까?
IronXL 개발자가 ASP.NET 애플리케이션에서 직접 형식이 제대로 지정된 Excel 파일을 생성할 수 있도록 하여 GridView에서 데이터를 내보내는 과정을 간소화하고 HTML 기반의 해결 방법을 사용할 필요성을 없애줍니다.
IronXL 내보낸 Excel 파일에 어떤 파일 형식을 사용하나요?
IronXL 데이터를 정품 XLSX 파일로 내보내므로 Excel에서 열었을 때 호환성과 올바른 서식이 보장됩니다.
IronXL Excel로 내보낼 때 발생하는 서식 문제를 해결하는 데 도움이 될 수 있나요?
네, IronXL 실제 Excel 파일을 생성하여 서식 문제를 해결하므로 브라우저 경고 없이 데이터가 올바르게 표시됩니다.
IronXL 사용하여 GridView 데이터를 내보내는 코드 예제가 있습니까?
네, 튜토리얼에는 IronXL 사용하여 GridView 데이터를 Excel로 효율적이고 효과적으로 내보내는 방법을 보여주는 코드 예제가 포함되어 있습니다.
IronXL GridView에서 대용량 데이터셋을 내보내는 기능을 지원합니까?
IronXL 은 대규모 데이터 세트를 효율적으로 처리하도록 설계되어 GridView에서 Excel로 방대한 데이터를 내보내는 데 적합합니다.
기존 방식과 비교하여 IronXL 사용하면 Excel 내보내기에 어떤 이점이 있습니까?
IronXL 브라우저 경고를 없애고, 올바른 파일 형식을 보장하며, GridView 데이터 내보내기를 위한 간편한 코드 구현을 제공하여 더욱 안정적이고 효율적인 솔루션을 제공합니다.



