IRONXL 사용하여 C#에서 Excel 피벗 테이블을 만드는 방법 커티스 차우 업데이트됨:11월 2, 2025 다운로드 IronXL NuGet 다운로드 DLL 다운로드 무료 체험 시작하기 LLM용 사본 LLM용 사본 LLM용 마크다운 형식으로 페이지를 복사하세요 ChatGPT에서 열기 ChatGPT에 이 페이지에 대해 문의하세요 제미니에서 열기 제미니에게 이 페이지에 대해 문의하세요 Grok에서 열기 Grok에게 이 페이지에 대해 문의하세요 혼란 속에서 열기 Perplexity에게 이 페이지에 대해 문의하세요 공유하다 페이스북에 공유하기 트위터에 공유하기 LinkedIn에 공유하기 URL 복사 이메일로 기사 보내기 프로그램적으로 Excel 피벗 테이블을 다루는 것은 소스 데이터를 분석하고 계산해야 하는 비즈니스 애플리케이션에서 일반적으로 요구됩니다. Microsoft의 Excel Interop은 Excel 파일에서 피벗 테이블을 만드는 전통적인 방법이었지만, 현대적인 솔루션인 IronXL은 상당한 이점을 제공합니다. 이 가이드는 실용적인 예제를 통해 C# Interop을 사용하여 Excel에서 피벗 테이블을 생성하거나 더 나은 대안을 선택하는 두 가지 방법을 자세히 설명합니다. 두 가지 접근 방식 이해하기 Excel Interop이란 무엇입니까? Excel Interop은 C#을 통해 COM(컴포넌트 오브젝트 모델)을 사용하여 Microsoft Excel을 직접 제어합니다. 시스템에 Office가 설치되어야 하며, 사용자와 애플리케이션이 상호 작용하듯이 Excel을 자동화합니다. 각 워크시트, 워크북 및 셀은 코드로 조작할 수 있는 객체가 됩니다. IronXL이란 무엇입니까? IronXL은 Microsoft Office를 요구하지 않고 Excel 파일을 읽고, 편집하고, 만들 수 있는 독립 실행형 .NET 라이브러리입니다. Windows, Linux, macOS 및 Docker 컨테이너에서 작동하여 현대적인 배포 시나리오에 적합합니다. COM 상호 운용의 부담 없이 데이터를 열고, 저장하고, 내보낼 수 있습니다. 환경 설정하기 Excel Interop을 위한 Install-Package Microsoft.Office.Interop.Excel IronXL을 위한 Install-Package IronXl.Excel 또한, NuGet 패키지 관리자 UI를 사용하여 "IronXl.Excel"을 검색하고 설치를 클릭할 수 있습니다. .NET CLI로 명령 인수를 사용하여 설치하거나 GitHub에서 직접 참조할 수도 있습니다. 두 라이브러리는 NuGet에서 사용할 수 있습니다. Excel Interop은 전체 Microsoft Office 설치가 필요하고 IronXL은 독립적으로 작동합니다. 계속하기 전에 시스템이 요구 사항을 충족하는지 확인하세요. Creating an Excel Pivot Table Programmatically with C# Interop 다음은 전통적인 Interop 접근 방식을 사용하여 프로그램적으로 피벗 테이블을 생성하는 방법을 보여주는 완전한 예제입니다: using Excel = Microsoft.Office.Interop.Excel; class Program { static void Main(string[] args) { // Create Excel application instance var excelApp = new Excel.Application(); var workbook = excelApp.Workbooks.Add(); var dataSheet = (Excel.Worksheet)workbook.Worksheets[1]; var pivotSheet = (Excel.Worksheet)workbook.Worksheets.Add(); // Add header row and sample data dataSheet.Cells[1, 1] = "Product"; dataSheet.Cells[1, 2] = "Region"; dataSheet.Cells[1, 3] = "Sales"; // ... populate data rows with values // Add sample data rows dataSheet.Cells[2, 1] = "Laptop"; dataSheet.Cells[2, 2] = "North"; dataSheet.Cells[2, 3] = 1200; dataSheet.Cells[3, 1] = "Laptop"; dataSheet.Cells[3, 2] = "South"; dataSheet.Cells[3, 3] = 1500; dataSheet.Cells[4, 1] = "Phone"; dataSheet.Cells[4, 2] = "North"; dataSheet.Cells[4, 3] = 800; dataSheet.Cells[5, 1] = "Phone"; dataSheet.Cells[5, 2] = "South"; dataSheet.Cells[5, 3] = 950; dataSheet.Cells[6, 1] = "Tablet"; dataSheet.Cells[6, 2] = "East"; dataSheet.Cells[6, 3] = 600; dataSheet.Cells[7, 1] = "Tablet"; dataSheet.Cells[7, 2] = "West"; dataSheet.Cells[7, 3] = 750; dataSheet.Cells[8, 1] = "Monitor"; dataSheet.Cells[8, 2] = "North"; dataSheet.Cells[8, 3] = 400; dataSheet.Cells[9, 1] = "Monitor"; dataSheet.Cells[9, 2] = "South"; dataSheet.Cells[9, 3] = 500; dataSheet.Cells[10, 1] = "Keyboard"; dataSheet.Cells[10, 2] = "East"; dataSheet.Cells[10, 3] = 300; // Create pivot cache from source data range Excel.Range dataRange = dataSheet.Range["A1:C10"]; Excel.PivotCache pivotCache = workbook.PivotCaches().Create( Excel.XlPivotTableSourceType.xlDatabase, dataRange); // Create PivotTable at specific location Excel.PivotTables pivotTables = (Excel.PivotTables)pivotSheet.PivotTables(); Excel.PivotTable pivotTable = pivotTables.Add( pivotCache, pivotSheet.Range["A3"], "SalesPivot"); // Configure pivot table fields - row and column headers ((Excel.PivotField)pivotTable.PivotFields("Product")).Orientation = Excel.XlPivotFieldOrientation.xlRowField; ((Excel.PivotField)pivotTable.PivotFields("Region")).Orientation = Excel.XlPivotFieldOrientation.xlColumnField; ((Excel.PivotField)pivotTable.PivotFields("Sales")).Orientation = Excel.XlPivotFieldOrientation.xlDataField; // Configure grand totals and formatting pivotTable.RowGrand = true; pivotTable.ColumnGrand = true; // Save the Excel file workbook.SaveAs("pivot_interop.xlsx"); workbook.Close(); excelApp.Quit(); // Critical: Release COM objects to avoid errors #if WINDOWS Marshal.ReleaseComObject(pivotTable); Marshal.ReleaseComObject(pivotSheet); Marshal.ReleaseComObject(dataSheet); Marshal.ReleaseComObject(workbook); Marshal.ReleaseComObject(excelApp); #endif } } using Excel = Microsoft.Office.Interop.Excel; class Program { static void Main(string[] args) { // Create Excel application instance var excelApp = new Excel.Application(); var workbook = excelApp.Workbooks.Add(); var dataSheet = (Excel.Worksheet)workbook.Worksheets[1]; var pivotSheet = (Excel.Worksheet)workbook.Worksheets.Add(); // Add header row and sample data dataSheet.Cells[1, 1] = "Product"; dataSheet.Cells[1, 2] = "Region"; dataSheet.Cells[1, 3] = "Sales"; // ... populate data rows with values // Add sample data rows dataSheet.Cells[2, 1] = "Laptop"; dataSheet.Cells[2, 2] = "North"; dataSheet.Cells[2, 3] = 1200; dataSheet.Cells[3, 1] = "Laptop"; dataSheet.Cells[3, 2] = "South"; dataSheet.Cells[3, 3] = 1500; dataSheet.Cells[4, 1] = "Phone"; dataSheet.Cells[4, 2] = "North"; dataSheet.Cells[4, 3] = 800; dataSheet.Cells[5, 1] = "Phone"; dataSheet.Cells[5, 2] = "South"; dataSheet.Cells[5, 3] = 950; dataSheet.Cells[6, 1] = "Tablet"; dataSheet.Cells[6, 2] = "East"; dataSheet.Cells[6, 3] = 600; dataSheet.Cells[7, 1] = "Tablet"; dataSheet.Cells[7, 2] = "West"; dataSheet.Cells[7, 3] = 750; dataSheet.Cells[8, 1] = "Monitor"; dataSheet.Cells[8, 2] = "North"; dataSheet.Cells[8, 3] = 400; dataSheet.Cells[9, 1] = "Monitor"; dataSheet.Cells[9, 2] = "South"; dataSheet.Cells[9, 3] = 500; dataSheet.Cells[10, 1] = "Keyboard"; dataSheet.Cells[10, 2] = "East"; dataSheet.Cells[10, 3] = 300; // Create pivot cache from source data range Excel.Range dataRange = dataSheet.Range["A1:C10"]; Excel.PivotCache pivotCache = workbook.PivotCaches().Create( Excel.XlPivotTableSourceType.xlDatabase, dataRange); // Create PivotTable at specific location Excel.PivotTables pivotTables = (Excel.PivotTables)pivotSheet.PivotTables(); Excel.PivotTable pivotTable = pivotTables.Add( pivotCache, pivotSheet.Range["A3"], "SalesPivot"); // Configure pivot table fields - row and column headers ((Excel.PivotField)pivotTable.PivotFields("Product")).Orientation = Excel.XlPivotFieldOrientation.xlRowField; ((Excel.PivotField)pivotTable.PivotFields("Region")).Orientation = Excel.XlPivotFieldOrientation.xlColumnField; ((Excel.PivotField)pivotTable.PivotFields("Sales")).Orientation = Excel.XlPivotFieldOrientation.xlDataField; // Configure grand totals and formatting pivotTable.RowGrand = true; pivotTable.ColumnGrand = true; // Save the Excel file workbook.SaveAs("pivot_interop.xlsx"); workbook.Close(); excelApp.Quit(); // Critical: Release COM objects to avoid errors #if WINDOWS Marshal.ReleaseComObject(pivotTable); Marshal.ReleaseComObject(pivotSheet); Marshal.ReleaseComObject(dataSheet); Marshal.ReleaseComObject(workbook); Marshal.ReleaseComObject(excelApp); #endif } } $vbLabelText $csharpLabel 이 코드는 Excel 애플리케이션을 생성하고, 헤더 행을 포함한 소스 데이터로 워크시트를 추가하며, 피벗 캐시를 설정하고, PivotTable 객체를 구축하며, 필드 방향을 구성합니다. 정리 섹션은 매우 중요합니다 - COM 객체를 해제하지 않으면 메모리 누수가 발생합니다. 각 셀, 범위 및 워크시트는 런타임 오류를 피하기 위해 적절히 처분해야 합니다. IronXL 대안 접근 방식 IronXL은 Excel 파일 형식을 직접 처리하여 다른 접근 방식을 취합니다. 유사한 분석 결과를 프로그램적으로 달성하는 방법은 다음과 같습니다: using IronXL; using System.Linq; class Program { static void Main(string[] args) { // Create workbook and add worksheet with data WorkBook workbook = WorkBook.Create(); WorkSheet sheet = workbook.CreateWorkSheet("Data"); // Add header row to define column structure sheet["A1"].Value = "Product"; sheet["B1"].Value = "Region"; sheet["C1"].Value = "Sales"; // Add sample data to cells sheet["A2"].Value = "Widget"; sheet["B2"].Value = "North"; sheet["C2"].Value = 1500; // ... continue to add more data rows sheet["A3"].Value = "Laptop"; sheet["B3"].Value = "South"; sheet["C3"].Value = 1500; sheet["A4"].Value = "Phone"; sheet["B4"].Value = "North"; sheet["C4"].Value = 800; sheet["A5"].Value = "Phone"; sheet["B5"].Value = "South"; sheet["C5"].Value = 950; sheet["A6"].Value = "Tablet"; sheet["B6"].Value = "East"; sheet["C6"].Value = 600; sheet["A7"].Value = "Tablet"; sheet["B7"].Value = "West"; sheet["C7"].Value = 750; sheet["A8"].Value = "Monitor"; sheet["B8"].Value = "North"; sheet["C8"].Value = 400; sheet["A9"].Value = "Monitor"; sheet["B9"].Value = "South"; sheet["C9"].Value = 500; sheet["A10"].Value = "Keyboard"; sheet["B10"].Value = "East"; sheet["C10"].Value = 300; // Create summary analysis worksheet var summarySheet = workbook.CreateWorkSheet("Summary"); // Group and calculate aggregated data var data = sheet["A1:C10"].ToDataTable(true); var productSummary = data.AsEnumerable() .GroupBy(row => row.Field<string>("Product")) .Select((group, index) => new { Product = group.Key, TotalSales = group.Sum(r => Convert.ToDecimal(r["Sales"])), Count = group.Count(), RowIndex = index + 2 }); // Write column headers for summary summarySheet["A1"].Value = "Product Summary"; summarySheet["A2"].Value = "Product"; summarySheet["B2"].Value = "Total Sales"; summarySheet["C2"].Value = "Count"; // Export results to cells foreach (var item in productSummary) { summarySheet[$"A{item.RowIndex + 1}"].Value = item.Product; summarySheet[$"B{item.RowIndex + 1}"].Value = item.TotalSales; summarySheet[$"C{item.RowIndex + 1}"].Value = item.Count; } // Apply number formatting and style summarySheet["B:B"].FormatString = "$#,##0.00"; // Save the xlsx file workbook.SaveAs("analysis_ironxl.xlsx"); } } using IronXL; using System.Linq; class Program { static void Main(string[] args) { // Create workbook and add worksheet with data WorkBook workbook = WorkBook.Create(); WorkSheet sheet = workbook.CreateWorkSheet("Data"); // Add header row to define column structure sheet["A1"].Value = "Product"; sheet["B1"].Value = "Region"; sheet["C1"].Value = "Sales"; // Add sample data to cells sheet["A2"].Value = "Widget"; sheet["B2"].Value = "North"; sheet["C2"].Value = 1500; // ... continue to add more data rows sheet["A3"].Value = "Laptop"; sheet["B3"].Value = "South"; sheet["C3"].Value = 1500; sheet["A4"].Value = "Phone"; sheet["B4"].Value = "North"; sheet["C4"].Value = 800; sheet["A5"].Value = "Phone"; sheet["B5"].Value = "South"; sheet["C5"].Value = 950; sheet["A6"].Value = "Tablet"; sheet["B6"].Value = "East"; sheet["C6"].Value = 600; sheet["A7"].Value = "Tablet"; sheet["B7"].Value = "West"; sheet["C7"].Value = 750; sheet["A8"].Value = "Monitor"; sheet["B8"].Value = "North"; sheet["C8"].Value = 400; sheet["A9"].Value = "Monitor"; sheet["B9"].Value = "South"; sheet["C9"].Value = 500; sheet["A10"].Value = "Keyboard"; sheet["B10"].Value = "East"; sheet["C10"].Value = 300; // Create summary analysis worksheet var summarySheet = workbook.CreateWorkSheet("Summary"); // Group and calculate aggregated data var data = sheet["A1:C10"].ToDataTable(true); var productSummary = data.AsEnumerable() .GroupBy(row => row.Field<string>("Product")) .Select((group, index) => new { Product = group.Key, TotalSales = group.Sum(r => Convert.ToDecimal(r["Sales"])), Count = group.Count(), RowIndex = index + 2 }); // Write column headers for summary summarySheet["A1"].Value = "Product Summary"; summarySheet["A2"].Value = "Product"; summarySheet["B2"].Value = "Total Sales"; summarySheet["C2"].Value = "Count"; // Export results to cells foreach (var item in productSummary) { summarySheet[$"A{item.RowIndex + 1}"].Value = item.Product; summarySheet[$"B{item.RowIndex + 1}"].Value = item.TotalSales; summarySheet[$"C{item.RowIndex + 1}"].Value = item.Count; } // Apply number formatting and style summarySheet["B:B"].FormatString = "$#,##0.00"; // Save the xlsx file workbook.SaveAs("analysis_ironxl.xlsx"); } } $vbLabelText $csharpLabel 이 IronXL 예제는 워크북을 생성하고, 워크시트를 추가하고, 데이터를 사용하여 셀을 채우며 집계 분석을 수행하는 방법을 보여줍니다. 코드는 제품별로 데이터를 그룹화하고, 합계와 카운트를 계산하여 요약 보고서를 작성합니다. COM 개체에 대한 관리가 필요하지 않으며, 메서드는 자동으로 메모리를 처리하는 간단한 .NET 컬렉션입니다. 산출 주요 차이점 및 고려 사항 배포 요구사항 Excel Interop의 요구사항: 유효한 라이선스가 있는 Microsoft Excel 설치 Windows 운영 체제 적절한 COM 권한 및 설정 Office 자동화를 위한 서버 구성 IronXL의 요구사항: IronXL 라이브러리 패키지만 필요 .NET을 지원하는 모든 플랫폼에서 작동 Office 설치나 라이선스 불필요 간소화된 배포 과정 코드 품질 및 유지 보수 Interop에서는 메모리 누수 및 오류를 피하기 위해 COM 개체를 주의 깊게 관리해야 합니다. 생성된 모든 Excel 개체는 올바른 메서드를 사용하여 명시적으로 해제해야 합니다. IronXL은 자동 쓰레기 수집이 포함된 표준 .NET 개체를 사용하여 자원 문제의 위험을 줄입니다. 오류 처리 Interop과 관련된 오류는 종종 Excel 가용성, 버전 차이 또는 COM 실패와 관련이 있습니다. IronXL 오류는 표준 .NET 예외로, 디버그가 더 간단합니다. COM 관련 문제에 대해 걱정하지 않고 익숙한 try-catch 패턴에 의존할 수 있습니다. 모범 사례 및 권장 사항 Excel Interop을 선택하세요: 모든 서식 옵션이 포함된 정확한 Excel 피벗 테이블 기능이 필요할 때 시스템에서 Excel의 가용성이 보장될 때 Windows 데스크탑 애플리케이션에서만 작업할 때 레거시 코드 요구사항이 있을 때 IronXL을 선택하세요: 서버 애플리케이션이나 웹 솔루션을 빌드할 때 플랫폼 간 호환성이 필요할 때 COM 오버헤드 없이 안정적인 성능이 필요할 때 컨테이너나 클라우드 환경에 배포할 때 IronXL 문서를 방문하여 구현에 대한 자세한 내용을 알아보세요. 질문이나 지원이 필요하면 Iron Software 팀에 문의하세요. 결론 C# Interop은 Excel의 피벗 테이블 기능에 직접 접근할 수 있는 반면, 배포 제한과 복잡성을 수반합니다. IronXL은 .NET이 지원되는 어디서나 실행할 수 있는 유연성을 제공하면서 Excel 파일 조작을 단순화하는 현대적인 대안을 제공합니다. 새로운 애플리케이션을 개발하거나 기존 솔루션을 현대화하는 개발자에게 IronXL의 접근 방식은 COM InterOp 오버헤드를 제거하면서 강력한 데이터 조작 기능을 제공합니다. Excel 데이터를 읽고, 편집하고, 내보내야 할 때 IronXL은 더 깔끔한 솔루션을 제공합니다. IronXL의 무료 체험판으로 차이를 경험하거나 튜토리얼을 탐색하여 더 많은 예제를 확인해보세요. 배포할 준비가 되셨나요? 라이선스 옵션 보기를 통해 작업에 맞는 패키지를 선택하세요. 자주 묻는 질문 피벗 테이블을 만들 때 Excel Interop 대신 IronXL 사용하는 장점은 무엇입니까? IronXL 사용 편의성, 향상된 성능, 서버에 Excel이 설치되어 있지 않아도 피벗 테이블을 생성할 수 있는 기능 등 Excel Interop에 비해 여러 가지 중요한 이점을 제공합니다. Excel Interop을 사용하지 않고 C#에서 Excel 피벗 테이블을 만들 수 있나요? 네, IronXL 사용하면 C#에서 Excel 피벗 테이블을 만들 수 있습니다. IronXL은 Excel Interop의 현대적이고 효율적인 대안을 제공합니다. IronXL 사용하려면 Microsoft Excel이 설치되어 있어야 하나요? 아니요, IronXL 시스템에 Microsoft Excel이 설치되어 있을 필요가 없으므로 Excel 파일을 생성하고 관리하는 데 유연한 솔루션입니다. IronXL 사용하여 Excel에서 피벗 테이블을 만드는 단계는 무엇입니까? IronXL 사용하여 피벗 테이블을 만들려면 먼저 Excel 파일을 불러오고, 데이터 범위를 지정하고, 피벗 테이블 필드를 정의한 다음 피벗 테이블을 생성하면 됩니다. IronXL의 포괄적인 API 덕분에 이 과정이 매우 간편합니다. IronXL 피벗 테이블 외에 다른 Excel 기능도 지원합니까? 네, IronXL Excel 파일 읽기 및 쓰기, 셀 서식 지정, 계산 수행 등 다양한 Excel 기능을 지원합니다. IronXL 피벗 테이블을 생성할 때 대규모 데이터 세트를 어떻게 처리합니까? IronXL 대규모 데이터 세트를 효율적으로 처리하도록 설계되어 방대한 데이터가 있더라도 피벗 테이블을 빠르고 안정적으로 생성할 수 있습니다. IronXL 클라우드 기반 애플리케이션에서 사용할 수 있습니까? 네, IronXL 클라우드 기반 애플리케이션에 통합되어 클라우드에서 Excel 파일을 관리하는 원활한 솔루션을 제공합니다. IronXL 은 피벗 테이블 생성을 위해 어떤 프로그래밍 언어를 지원합니까? IronXL 주로 C#을 지원하므로 .NET 애플리케이션 내에서 피벗 테이블을 만들고 기타 Excel 작업을 쉽게 수행할 수 있습니다. IronXL 사용법을 배울 수 있는 튜토리얼이 있나요? 네, Iron Software 사용자가 IronXL 효과적으로 사용하는 방법을 배울 수 있도록 웹사이트에 포괄적인 문서와 튜토리얼을 제공합니다. IronXL 에 사용할 수 있는 라이선스 옵션은 무엇입니까? IronXL 다양한 프로젝트 요구 사항과 규모에 맞춰 무료 및 유료 등급을 포함한 다양한 라이선스 옵션을 제공합니다. 커티스 차우 지금 바로 엔지니어링 팀과 채팅하세요 기술 문서 작성자 커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다. 커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다. 관련 기사 업데이트됨 3월 1, 2026 .NET C#에서 Excel 파일 다운로드: XLSX, CSV 등 다양한 형식으로 데이터 내보내기 ASP.NET Core 에서 C# 및 IronXL 사용하여 Excel 파일을 다운로드하는 방법을 설명합니다. MVC 컨트롤러에서 MemoryStream 및 File() 반환 값을 사용하여 데이터를 XLSX, CSV 및 XML 형식으로 내보낼 수 있습니다. 코드 예제가 포함되어 있습니다. 더 읽어보기 업데이트됨 3월 1, 2026 IronXL 사용하여 Blazor 에서 Excel 파일을 내보내는 방법 IronXL 사용하여 Blazor Server 애플리케이션에서 데이터를 Excel로 내보내는 방법을 알아보세요. 이 가이드에서는 프로젝트 설정, 서비스 설계, 조건부 서식, 다중 시트 보고서 및 오류 처리에 대한 모든 C# 코드 예제를 다룹니다. 더 읽어보기 업데이트됨 2월 27, 2026 StreamReader 대신 C#에서 Excel 파일을 읽는 방법 StreamReader가 Excel 파일을 읽을 수 없는 이유와 C# .NET 에서 IronXL 사용하여 디스크 또는 메모리 스트림에서 XLSX 및 XLS 통합 문서를 로드하는 방법을 알아보세요. 더 읽어보기 IronXL 사용하여 C#에서 Excel 데이터를 가져오는 방법C#에서 템플릿을 내보내는 ...
업데이트됨 3월 1, 2026 .NET C#에서 Excel 파일 다운로드: XLSX, CSV 등 다양한 형식으로 데이터 내보내기 ASP.NET Core 에서 C# 및 IronXL 사용하여 Excel 파일을 다운로드하는 방법을 설명합니다. MVC 컨트롤러에서 MemoryStream 및 File() 반환 값을 사용하여 데이터를 XLSX, CSV 및 XML 형식으로 내보낼 수 있습니다. 코드 예제가 포함되어 있습니다. 더 읽어보기
업데이트됨 3월 1, 2026 IronXL 사용하여 Blazor 에서 Excel 파일을 내보내는 방법 IronXL 사용하여 Blazor Server 애플리케이션에서 데이터를 Excel로 내보내는 방법을 알아보세요. 이 가이드에서는 프로젝트 설정, 서비스 설계, 조건부 서식, 다중 시트 보고서 및 오류 처리에 대한 모든 C# 코드 예제를 다룹니다. 더 읽어보기
업데이트됨 2월 27, 2026 StreamReader 대신 C#에서 Excel 파일을 읽는 방법 StreamReader가 Excel 파일을 읽을 수 없는 이유와 C# .NET 에서 IronXL 사용하여 디스크 또는 메모리 스트림에서 XLSX 및 XLS 통합 문서를 로드하는 방법을 알아보세요. 더 읽어보기