IRONXL 사용하여 IronXL 사용하여 C#에서 Excel 파일을 생성하는 방법 커티스 차우 업데이트됨:3월 1, 2026 다운로드 IronXL NuGet 다운로드 DLL 다운로드 무료 체험 시작하기 LLM용 사본 LLM용 사본 LLM용 마크다운 형식으로 페이지를 복사하세요 ChatGPT에서 열기 ChatGPT에 이 페이지에 대해 문의하세요 제미니에서 열기 제미니에게 이 페이지에 대해 문의하세요 Grok에서 열기 Grok에게 이 페이지에 대해 문의하세요 혼란 속에서 열기 Perplexity에게 이 페이지에 대해 문의하세요 공유하다 페이스북에 공유하기 트위터에 공유하기 LinkedIn에 공유하기 URL 복사 이메일로 기사 보내기 전통적으로 C#에서 Excel 워크시트를 프로그래밍 방식으로 생성하려면 Microsoft Office 설치 또는 복잡한 COM Interop이 필요했습니다. IronXL은 이 점을 완전히 바꾸어 Office 종속 없이 Excel 파일을 생성하는 간단한 API를 제공합니다. 이 튜토리얼은 기본 스프레드시트 생성에서 고급 포맷팅 및 데이터베이스 통합까지 C#에서 IronXL을 사용하여 Excel 파일을 구축하는 방법을 안내합니다. 보고서를 생성하거나 데이터를 내보내기(XLS 또는 XLSX 파일)하거나 스프레드시트 생성을 자동화할 때, .NET 애플리케이션에서 Excel을 처리하기 위한 필수 기법을 배우게 됩니다. Microsoft Office 없이 Excel 파일을 생성하는 이유는? Office 종속 없이 Excel 생성 기능을 개발하면 중요한 배포 문제를 해결합니다. 서버 환경은 라이센스 비용과 리소스 부담으로 인해 Microsoft Office를 거의 설치하지 않습니다. 각 Office 설치는 상당한 디스크 공간 및 메모리를 요구하여 클라우드 배포 또는 컨테이너화된 애플리케이션에 비현실적입니다. IronXL은 독립적으로 작동하여 이러한 제약을 제거합니다. C# Excel 파일 생성은 Windows, Linux, macOS, Docker 컨테이너 또는 Azure App Services에서 수정 없이 실행됩니다. 이 크로스 플랫폼 호환성은 .NET Framework, .NET Core 또는 .NET 10 애플리케이션 대상을 작성하고 어디에서든 배포할 수 있음을 의미합니다. COM Interop 오버헤드 없이 성능이 크게 향상됩니다. 전통적인 오피스 자동화는 각 작업마다 별도의 프로세스 인스턴스를 생성하여 메모리와 CPU 리소스를 소비합니다. IronXL은 모든 것을 애플리케이션의 프로세스 공간 내에서 메모리로 처리하여 프로그래밍 방식으로 Excel 파일을 생성할 때 더 빠른 실행과 낮은 리소스 소비를 달성합니다. IronXL은 단일 NuGet 패키지로 제공되므로 배포가 간단해집니다. 레지스트리 항목, COM 등록, Office 서비스 팩 유지보수가 없습니다. 연속 통합 파이프라인은 마찰 없이 작동하고 Docker 컨테이너는 경량 상태를 유지합니다. 이 단순한 접근 방식으로 인해 IronXL은 개발자 포럼에서 전문직들이 Excel 자동화 경험을 공유하는 것을 볼 때 인기 있는 선택이 되었습니다. 일부 개발자는 여전히 Microsoft의 Open XML 생산성 도구를 사용하여 직접 Office Open XML 파일 구조와 작업합니다. 그럼에도 불구하고, 이러한 접근은 더 많은 수작업과 XML 스키마 및 Open XML SDK 설치에 대한 상세한 지식이 필요합니다. IronXL은 이러한 복잡성을 추상화하여 Excel을 프로그래밍 방식으로 다루는 더 빠른 경로를 제공합니다. IronXL을 C# 프로젝트에 설치하는 방법 IronXL 설치는 Visual Studio의 NuGet 패키지 매니저를 통해 몇 분이면 완료됩니다. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 "NuGet 패키지 관리"를 선택하세요. "IronXl.Excel"을 검색하고 설치를 클릭하세요. 이 패키지는 C#에서 Excel 파일을 생성하는 데 필요한 모든 종속성을 자동으로 포함합니다. 패키지 관리자 콘솔 또는 .NET CLI를 통해 설치하려면 다음 명령 중 하나를 사용하세요: Install-Package IronXl.Excel dotnet add package IronXl.Excel Install-Package IronXl.Excel dotnet add package IronXl.Excel SHELL 라이브러리가 준비 상태인지 확인하기 위해 간단한 테스트로 설치를 확인하세요: using IronXL; // Create an in-memory workbook var workbook = WorkBook.Create(); Console.WriteLine("IronXL installed successfully!"); using IronXL; // Create an in-memory workbook var workbook = WorkBook.Create(); Console.WriteLine("IronXL installed successfully!"); $vbLabelText $csharpLabel 이것이 오류 없이 실행된다면 IronXL은 사용 준비가 된 것입니다. 이 라이브러리는 모든 현대 .NET 버전을 지원하여 기존 프로젝트와의 호환성을 보장합니다. 자세한 설치 가이드 및 문제 해결을 위해 공식 NuGet 설치 문서를 참조하세요. 산출 첫 번째 Excel 파일을 어떻게 만드시겠습니까? IronXL로 Excel 파일을 생성하는 것은 모든 Excel 작업의 관문인 WorkBook 클래스로 시작합니다. 라이브러리는 현대식 XLSX 및 레거시 XLS 형식을 모두 지원하여 C#에서 Excel 파일을 생성할 때 다양한 요구 사항에 대한 유연성을 제공합니다. using IronXL; // Create a new workbook (XLSX format by default) WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX); // Add metadata workbook.Metadata.Title = "Monthly Sales Report"; workbook.Metadata.Author = "Sales Department"; workbook.Metadata.Comments = "Generated using IronXL"; // Create a worksheet WorkSheet worksheet = workbook.CreateWorkSheet("January Sales"); // Add header row worksheet["A1"].Value = "Date"; worksheet["B1"].Value = "Product"; worksheet["C1"].Value = "Quantity"; worksheet["D1"].Value = "Revenue"; // Add data rows worksheet["A2"].Value = new DateTime(2024, 1, 15); worksheet["B2"].Value = "Widget Pro"; worksheet["C2"].Value = 100; worksheet["D2"].Value = 2500.00; // Save the workbook workbook.SaveAs("FirstExcelFile.xlsx"); using IronXL; // Create a new workbook (XLSX format by default) WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX); // Add metadata workbook.Metadata.Title = "Monthly Sales Report"; workbook.Metadata.Author = "Sales Department"; workbook.Metadata.Comments = "Generated using IronXL"; // Create a worksheet WorkSheet worksheet = workbook.CreateWorkSheet("January Sales"); // Add header row worksheet["A1"].Value = "Date"; worksheet["B1"].Value = "Product"; worksheet["C1"].Value = "Quantity"; worksheet["D1"].Value = "Revenue"; // Add data rows worksheet["A2"].Value = new DateTime(2024, 1, 15); worksheet["B2"].Value = "Widget Pro"; worksheet["C2"].Value = 100; worksheet["D2"].Value = 2500.00; // Save the workbook workbook.SaveAs("FirstExcelFile.xlsx"); $vbLabelText $csharpLabel 이 코드는 Excel 파일 생성의 여러 주요 개념을 보여줍니다. WorkBook.Create() 메서드는 메모리에 새로운 Excel 파일을 초기화합니다. 형식을 지정하기 위해 ExcelFileFormat 열거형을 사용하여 - 현대 Excel 호환성을 위해 XLSX를 선택하거나 구형 지원을 위해 XLS를 선택합니다. Metadata 속성을 사용하면 Excel의 파일 속성에 나타나는 문서 정보를 포함할 수 있으며, Microsoft의 문서 속성 표준을 따릅니다. CreateWorkSheet() 메서드는 지정된 이름으로 새로운 시트를 추가합니다. Excel의 익숙한 셀 표기법(A1, B1 등)은 값 설정을 직관적으로 만듭니다. IronXL은 명시적 형변환 없이 날짜, 숫자, 텍스트를 인식하여 데이터 타입 변환을 자동으로 처리합니다. SaveAs() 메서드는 완전한 Excel 파일을 디스크에 씁니다. 추가 워크시트 작업을 위해 Excel 파일 작성 가이드를 참고하세요. 산출 Excel 셀에 데이터를 어떻게 쓰나요? IronXL은 단일 셀 할당부터 대량 범위 작업에 이르기까지 여러 가지 Excel 셀 채우기 방법을 제공합니다. 이 방법들을 이해하면 Excel 파일에 쓸 때 데이터 시나리오에 가장 적합한 접근 방식을 선택할 수 있습니다. using IronXL; WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX); WorkSheet worksheet = workbook.CreateWorkSheet("Employees"); // Individual cell assignment worksheet["A1"].Value = "Employee Name"; worksheet["A2"].Value = "John Smith"; worksheet["A3"].Value = "Jane Doe"; // Range assignment for multiple cells at once worksheet["B1:B3"].Value = "Active"; // Using numeric indices (0-based row, 0-based column) worksheet.SetCellValue(0, 2, "Department"); // C1 worksheet.SetCellValue(1, 2, "Sales"); // C2 worksheet.SetCellValue(2, 2, "Marketing"); // C3 // Array-based header population string[] headers = { "ID", "Name", "Email", "Phone" }; for (int i = 0; i < headers.Length; i++) { worksheet.SetCellValue(0, i, headers[i]); } // Working with different data types worksheet["E1"].Value = "Salary"; worksheet["E2"].Value = 75000.50m; // Decimal for currency worksheet["E3"].Value = 82000.75m; worksheet["F1"].Value = "Start Date"; worksheet["F2"].Value = new DateTime(2020, 3, 15); worksheet["F3"].Value = new DateTime(2019, 7, 1); worksheet["G1"].Value = "Full Time"; worksheet["G2"].Value = true; // Boolean worksheet["G3"].Value = true; workbook.SaveAs("EmployeeData.xlsx"); using IronXL; WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX); WorkSheet worksheet = workbook.CreateWorkSheet("Employees"); // Individual cell assignment worksheet["A1"].Value = "Employee Name"; worksheet["A2"].Value = "John Smith"; worksheet["A3"].Value = "Jane Doe"; // Range assignment for multiple cells at once worksheet["B1:B3"].Value = "Active"; // Using numeric indices (0-based row, 0-based column) worksheet.SetCellValue(0, 2, "Department"); // C1 worksheet.SetCellValue(1, 2, "Sales"); // C2 worksheet.SetCellValue(2, 2, "Marketing"); // C3 // Array-based header population string[] headers = { "ID", "Name", "Email", "Phone" }; for (int i = 0; i < headers.Length; i++) { worksheet.SetCellValue(0, i, headers[i]); } // Working with different data types worksheet["E1"].Value = "Salary"; worksheet["E2"].Value = 75000.50m; // Decimal for currency worksheet["E3"].Value = 82000.75m; worksheet["F1"].Value = "Start Date"; worksheet["F2"].Value = new DateTime(2020, 3, 15); worksheet["F3"].Value = new DateTime(2019, 7, 1); worksheet["G1"].Value = "Full Time"; worksheet["G2"].Value = true; // Boolean worksheet["G3"].Value = true; workbook.SaveAs("EmployeeData.xlsx"); $vbLabelText $csharpLabel 코드는 IronXL의 유연한 셀 주소 지정을 보여줍니다. 문자열 표기법("A1")은 Excel 사용자에게 자연스럽게 느껴지며, 수치 인덱스는 루프 및 동적 생성에 프로그래밍적 제어를 제공합니다. 범위 할당("B1:B3")은 여러 셀을 동일한 값으로 효율적으로 설정하며, 열 초기화 또는 기본 값 적용에 이상적입니다. IronXL은 다른 데이터 유형을 지능적으로 처리합니다. 소수점은 금융 데이터의 정확성을 유지하고, DateTime 객체는 Excel 날짜로 올바르게 형식화되며, 부울은 TRUE/FALSE로 나타납니다. 이 자동 변환은 수동 형식화 코드를 제거하면서 데이터 무결성을 보장합니다. 대규모 데이터셋의 경우, 추가 패턴을 위해 데이터 가져오기 가이드를 탐색하세요. 산출 Excel 파일에 전문적인 서식을 어떻게 적용하나요? 전문적인 Excel 파일은 단순한 원시 데이터 그 이상이 필요합니다. IronXL의 스타일링 API는 형식, 색상, 시각적 계층 구조를 통해 평범한 스프레드시트를 세련된 비즈니스 문서로 변환합니다. 셀 서식을 적용하여 스프레드시트의 모든 시각적 측면을 제어할 수 있습니다. using IronXL; WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX); WorkSheet worksheet = workbook.CreateWorkSheet("Employees"); // Header formatting var headerRange = worksheet["A1:D1"]; headerRange.Style.Font.Bold = true; headerRange.Style.Font.Height = 12; headerRange.Style.SetBackgroundColor("#4472C4"); headerRange.Style.Font.Color = "#FFFFFF"; // Column width adjustment worksheet.AutoSizeColumn(0); // Auto-fit column A worksheet.GetColumn(1).Width = 20; // Set column B width // Number formatting var salaryColumn = worksheet["E2:E3"]; salaryColumn.FormatString = "$#,##0.00"; // Date formatting var dateColumn = worksheet["F2:F3"]; dateColumn.FormatString = "MM/dd/yyyy"; // Cell borders var dataRange = worksheet["A1:G3"]; dataRange.Style.TopBorder.Type = IronXl.Styles.BorderType.Thin; dataRange.Style.BottomBorder.Type = IronXl.Styles.BorderType.Thin; dataRange.Style.LeftBorder.Type = IronXl.Styles.BorderType.Thin; dataRange.Style.RightBorder.Type = IronXl.Styles.BorderType.Thin; dataRange.Style.TopBorder.Color = "#000000"; dataRange.Style.BottomBorder.Color = "#000000"; // Text alignment worksheet["A1:G1"].Style.HorizontalAlignment = IronXl.Styles.HorizontalAlignment.Center; // Alternating row colors for readability (banded rows) for (int row = 2; row <= 10; row++) { if (row % 2 == 0) { worksheet[$"A{row}:G{row}"].Style.SetBackgroundColor("#F2F2F2"); } } workbook.SaveAs("FormattedReport.xlsx"); using IronXL; WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX); WorkSheet worksheet = workbook.CreateWorkSheet("Employees"); // Header formatting var headerRange = worksheet["A1:D1"]; headerRange.Style.Font.Bold = true; headerRange.Style.Font.Height = 12; headerRange.Style.SetBackgroundColor("#4472C4"); headerRange.Style.Font.Color = "#FFFFFF"; // Column width adjustment worksheet.AutoSizeColumn(0); // Auto-fit column A worksheet.GetColumn(1).Width = 20; // Set column B width // Number formatting var salaryColumn = worksheet["E2:E3"]; salaryColumn.FormatString = "$#,##0.00"; // Date formatting var dateColumn = worksheet["F2:F3"]; dateColumn.FormatString = "MM/dd/yyyy"; // Cell borders var dataRange = worksheet["A1:G3"]; dataRange.Style.TopBorder.Type = IronXl.Styles.BorderType.Thin; dataRange.Style.BottomBorder.Type = IronXl.Styles.BorderType.Thin; dataRange.Style.LeftBorder.Type = IronXl.Styles.BorderType.Thin; dataRange.Style.RightBorder.Type = IronXl.Styles.BorderType.Thin; dataRange.Style.TopBorder.Color = "#000000"; dataRange.Style.BottomBorder.Color = "#000000"; // Text alignment worksheet["A1:G1"].Style.HorizontalAlignment = IronXl.Styles.HorizontalAlignment.Center; // Alternating row colors for readability (banded rows) for (int row = 2; row <= 10; row++) { if (row % 2 == 0) { worksheet[$"A{row}:G{row}"].Style.SetBackgroundColor("#F2F2F2"); } } workbook.SaveAs("FormattedReport.xlsx"); $vbLabelText $csharpLabel 이 서식 코드는 비즈니스 기준을 충족하는 전문적인 외관을 만듭니다. 배경 색상이 있는 굵은 헤더는 시각적 계층 구조를 설정합니다. SetBackgroundColor() 메서드는 헥스 색상 코드를 받아 색상 체계에 대한 정밀한 제어를 제공합니다. 글꼴 속성은 크기, 색상, 굵게, 이탤릭, 밑줄 옵션을 포함하며, 모두 기업 브랜드 가이드라인에 맞는 Excel 파일을 만드는 데 필수적입니다. 열 너비 조정은 텍스트 잘림을 방지합니다. AutoSizeColumn()는 내용을 자동으로 맞추고, GetColumn().Width은 정확한 제어를 제공합니다. 숫자 형식은 Excel의 형식 코드를 사용합니다. 예를 들어, "$#,##0.00"은 천 단위 구분 기호 및 소수점 이하 두 자리와 함께 통화를 표시합니다. 날짜 형식은 유사한 패턴을 따르며, Microsoft의 숫자 형식 코드 참조에 문서화된 표준 Excel 날짜 형식 문자열을 사용합니다. 테두리는 데이터 경계를 정의하여 가독성을 향상시킵니다. BorderType 열거형은 다양한 스타일을 제공합니다: 얇은, 중간, 두꺼운, 점선 및 대시선. 대체 행의 색상은 종종 "띠 모양 행"이라고 하며, 읽기가 넓은 데이터 세트에서 정보 추적을 돕습니다. 셀 병합 및 기타 레이아웃 기능에 대해 더 배우려면 셀 병합 가이드를 참조하세요. 산출 Excel 수식을 프로그래밍 방식으로 어떻게 사용합니까? Excel 수식은 자동 계산으로 스프레드시트에 생명을 불어넣습니다. IronXL은 수식 생성과 평가를 지원하여 자동으로 업데이트되는 동적 스프레드시트를 가능하게 합니다. using IronXL; var workbook = WorkBook.Create(); // Create a budget worksheet WorkSheet budget = workbook.CreateWorkSheet("Q1 Budget"); // Headers budget["A1"].Value = "Category"; budget["B1"].Value = "January"; budget["C1"].Value = "February"; budget["D1"].Value = "March"; budget["E1"].Value = "Q1 Total"; // Budget categories and values string[] categories = { "Salaries", "Marketing", "Operations", "Equipment", "Training" }; decimal[,] monthlyBudgets = { { 50000, 52000, 51000 }, { 15000, 18000, 20000 }, { 8000, 8500, 9000 }, { 12000, 5000, 7000 }, { 3000, 3500, 4000 } }; // Populate data and add row total formulas for (int i = 0; i < categories.Length; i++) { budget[$"A{i + 2}"].Value = categories[i]; budget[$"B{i + 2}"].Value = monthlyBudgets[i, 0]; budget[$"C{i + 2}"].Value = monthlyBudgets[i, 1]; budget[$"D{i + 2}"].Value = monthlyBudgets[i, 2]; budget[$"E{i + 2}"].Formula = $"=SUM(B{i + 2}:D{i + 2})"; } // Monthly totals row budget["A7"].Value = "Monthly Total"; budget["B7"].Formula = "=SUM(B2:B6)"; budget["C7"].Formula = "=SUM(C2:C6)"; budget["D7"].Formula = "=SUM(D2:D6)"; budget["E7"].Formula = "=SUM(E2:E6)"; // Calculate percentages budget["A9"].Value = "Marketing %"; budget["B9"].Formula = "=B3/B7*100"; // Average calculation budget["A10"].Value = "Average Spending"; budget["B10"].Formula = "=AVERAGE(B2:B6)"; // Evaluate all formulas before saving workbook.EvaluateAll(); workbook.SaveAs("Budget.xlsx"); using IronXL; var workbook = WorkBook.Create(); // Create a budget worksheet WorkSheet budget = workbook.CreateWorkSheet("Q1 Budget"); // Headers budget["A1"].Value = "Category"; budget["B1"].Value = "January"; budget["C1"].Value = "February"; budget["D1"].Value = "March"; budget["E1"].Value = "Q1 Total"; // Budget categories and values string[] categories = { "Salaries", "Marketing", "Operations", "Equipment", "Training" }; decimal[,] monthlyBudgets = { { 50000, 52000, 51000 }, { 15000, 18000, 20000 }, { 8000, 8500, 9000 }, { 12000, 5000, 7000 }, { 3000, 3500, 4000 } }; // Populate data and add row total formulas for (int i = 0; i < categories.Length; i++) { budget[$"A{i + 2}"].Value = categories[i]; budget[$"B{i + 2}"].Value = monthlyBudgets[i, 0]; budget[$"C{i + 2}"].Value = monthlyBudgets[i, 1]; budget[$"D{i + 2}"].Value = monthlyBudgets[i, 2]; budget[$"E{i + 2}"].Formula = $"=SUM(B{i + 2}:D{i + 2})"; } // Monthly totals row budget["A7"].Value = "Monthly Total"; budget["B7"].Formula = "=SUM(B2:B6)"; budget["C7"].Formula = "=SUM(C2:C6)"; budget["D7"].Formula = "=SUM(D2:D6)"; budget["E7"].Formula = "=SUM(E2:E6)"; // Calculate percentages budget["A9"].Value = "Marketing %"; budget["B9"].Formula = "=B3/B7*100"; // Average calculation budget["A10"].Value = "Average Spending"; budget["B10"].Formula = "=AVERAGE(B2:B6)"; // Evaluate all formulas before saving workbook.EvaluateAll(); workbook.SaveAs("Budget.xlsx"); $vbLabelText $csharpLabel 이 예산 예시는 수식의 실제 응용을 보여줍니다. Formula 속성은 표준 Excel 수식 구문을 허용하며, 등호로 시작합니다. IronXL은 SUM, AVERAGE, COUNT, MAX, MIN 및 여러 다른 공통 함수를 지원합니다. 수식 내 셀 참조는 Excel에서와 정확히 동일하게 작동하며, 상대 및 절대 참조를 포함합니다. EvaluateAll() 메서드는 모든 공식을 처리하여 통합 문서 전반에 걸쳐 계산된 값을 업데이트합니다. 이는 파일이 Excel에서 열릴 때 수식이 결과를 표시하도록 보장합니다. 평가 없이 Excel은 사용자가 재계산을 트리거할 때까지 수식 텍스트를 표시합니다. 수식 결과 읽기에 대해 더 알고 싶다면, Excel 파일 문서 읽기를 참조하세요. 산출 데이터베이스 데이터를 Excel로 어떻게 내보내나요? 실제 응용 프로그램은 종종 보고 및 분석을 위해 데이터베이스 데이터를 Excel로 내보냅니다. IronXL은 내장된 DataTable 지원을 통해 수동 필드 매핑이 필요 없는 C# 애플리케이션에서 Excel로 내보내기를 쉽게 합니다. using System.Data; using IronXL; // Simulate database retrieval (replace with actual database code) DataTable GetSalesData() { DataTable dt = new DataTable("Sales"); dt.Columns.Add("OrderID", typeof(int)); dt.Columns.Add("CustomerName", typeof(string)); dt.Columns.Add("Product", typeof(string)); dt.Columns.Add("Quantity", typeof(int)); dt.Columns.Add("UnitPrice", typeof(decimal)); dt.Columns.Add("OrderDate", typeof(DateTime)); dt.Rows.Add(1001, "ABC Corp", "Widget Pro", 50, 25.99m, DateTime.Now.AddDays(-5)); dt.Rows.Add(1002, "XYZ Ltd", "Widget Basic", 100, 15.99m, DateTime.Now.AddDays(-4)); dt.Rows.Add(1003, "ABC Corp", "Widget Premium", 25, 45.99m, DateTime.Now.AddDays(-3)); dt.Rows.Add(1004, "Tech Solutions", "Widget Pro", 75, 25.99m, DateTime.Now.AddDays(-2)); dt.Rows.Add(1005, "XYZ Ltd", "Widget Premium", 30, 45.99m, DateTime.Now.AddDays(-1)); return dt; } // Export to Excel WorkBook reportWorkbook = WorkBook.Create(); WorkSheet reportSheet = reportWorkbook.CreateWorkSheet("Sales Report"); DataTable salesData = GetSalesData(); // Title row reportSheet["A1"].Value = "Order Report - " + DateTime.Now.ToString("MMMM yyyy"); reportSheet.Merge("A1:F1"); reportSheet["A1"].Style.Font.Bold = true; reportSheet["A1"].Style.Font.Height = 14; // Headers int headerRow = 3; for (int col = 0; col < salesData.Columns.Count; col++) { reportSheet.SetCellValue(headerRow - 1, col, salesData.Columns[col].ColumnName); } var headers = reportSheet[$"A{headerRow}:F{headerRow}"]; headers.Style.Font.Bold = true; headers.Style.SetBackgroundColor("#D9E1F2"); // Data rows for (int row = 0; row < salesData.Rows.Count; row++) { for (int col = 0; col < salesData.Columns.Count; col++) { reportSheet.SetCellValue(row + headerRow, col, salesData.Rows[row][col]); } reportSheet[$"G{row + headerRow + 1}"].Formula = $"=D{row + headerRow + 1}*E{row + headerRow + 1}"; } // Total header reportSheet["G3"].Value = "Total"; reportSheet["G3"].Style.Font.Bold = true; reportSheet["G3"].Style.SetBackgroundColor("#D9E1F2"); // Format currency and date columns reportSheet[$"E{headerRow + 1}:E{headerRow + salesData.Rows.Count}"].FormatString = "$#,##0.00"; reportSheet[$"G{headerRow + 1}:G{headerRow + salesData.Rows.Count}"].FormatString = "$#,##0.00"; reportSheet[$"F{headerRow + 1}:F{headerRow + salesData.Rows.Count}"].FormatString = "MM/dd/yyyy"; // Summary section int summaryRow = headerRow + salesData.Rows.Count + 2; reportSheet[$"A{summaryRow}"].Value = "Summary"; reportSheet[$"A{summaryRow}"].Style.Font.Bold = true; reportSheet[$"A{summaryRow + 1}"].Value = "Total Orders:"; reportSheet[$"B{summaryRow + 1}"].Formula = $"=COUNTA(A{headerRow + 1}:A{headerRow + salesData.Rows.Count})"; reportSheet[$"A{summaryRow + 2}"].Value = "Total Revenue:"; reportSheet[$"B{summaryRow + 2}"].Formula = $"=SUM(G{headerRow + 1}:G{headerRow + salesData.Rows.Count})"; reportSheet[$"B{summaryRow + 2}"].FormatString = "$#,##0.00"; for (int col = 0; col <= 6; col++) { reportSheet.AutoSizeColumn(col); } reportWorkbook.EvaluateAll(); reportWorkbook.SaveAs("DatabaseExport.xlsx"); using System.Data; using IronXL; // Simulate database retrieval (replace with actual database code) DataTable GetSalesData() { DataTable dt = new DataTable("Sales"); dt.Columns.Add("OrderID", typeof(int)); dt.Columns.Add("CustomerName", typeof(string)); dt.Columns.Add("Product", typeof(string)); dt.Columns.Add("Quantity", typeof(int)); dt.Columns.Add("UnitPrice", typeof(decimal)); dt.Columns.Add("OrderDate", typeof(DateTime)); dt.Rows.Add(1001, "ABC Corp", "Widget Pro", 50, 25.99m, DateTime.Now.AddDays(-5)); dt.Rows.Add(1002, "XYZ Ltd", "Widget Basic", 100, 15.99m, DateTime.Now.AddDays(-4)); dt.Rows.Add(1003, "ABC Corp", "Widget Premium", 25, 45.99m, DateTime.Now.AddDays(-3)); dt.Rows.Add(1004, "Tech Solutions", "Widget Pro", 75, 25.99m, DateTime.Now.AddDays(-2)); dt.Rows.Add(1005, "XYZ Ltd", "Widget Premium", 30, 45.99m, DateTime.Now.AddDays(-1)); return dt; } // Export to Excel WorkBook reportWorkbook = WorkBook.Create(); WorkSheet reportSheet = reportWorkbook.CreateWorkSheet("Sales Report"); DataTable salesData = GetSalesData(); // Title row reportSheet["A1"].Value = "Order Report - " + DateTime.Now.ToString("MMMM yyyy"); reportSheet.Merge("A1:F1"); reportSheet["A1"].Style.Font.Bold = true; reportSheet["A1"].Style.Font.Height = 14; // Headers int headerRow = 3; for (int col = 0; col < salesData.Columns.Count; col++) { reportSheet.SetCellValue(headerRow - 1, col, salesData.Columns[col].ColumnName); } var headers = reportSheet[$"A{headerRow}:F{headerRow}"]; headers.Style.Font.Bold = true; headers.Style.SetBackgroundColor("#D9E1F2"); // Data rows for (int row = 0; row < salesData.Rows.Count; row++) { for (int col = 0; col < salesData.Columns.Count; col++) { reportSheet.SetCellValue(row + headerRow, col, salesData.Rows[row][col]); } reportSheet[$"G{row + headerRow + 1}"].Formula = $"=D{row + headerRow + 1}*E{row + headerRow + 1}"; } // Total header reportSheet["G3"].Value = "Total"; reportSheet["G3"].Style.Font.Bold = true; reportSheet["G3"].Style.SetBackgroundColor("#D9E1F2"); // Format currency and date columns reportSheet[$"E{headerRow + 1}:E{headerRow + salesData.Rows.Count}"].FormatString = "$#,##0.00"; reportSheet[$"G{headerRow + 1}:G{headerRow + salesData.Rows.Count}"].FormatString = "$#,##0.00"; reportSheet[$"F{headerRow + 1}:F{headerRow + salesData.Rows.Count}"].FormatString = "MM/dd/yyyy"; // Summary section int summaryRow = headerRow + salesData.Rows.Count + 2; reportSheet[$"A{summaryRow}"].Value = "Summary"; reportSheet[$"A{summaryRow}"].Style.Font.Bold = true; reportSheet[$"A{summaryRow + 1}"].Value = "Total Orders:"; reportSheet[$"B{summaryRow + 1}"].Formula = $"=COUNTA(A{headerRow + 1}:A{headerRow + salesData.Rows.Count})"; reportSheet[$"A{summaryRow + 2}"].Value = "Total Revenue:"; reportSheet[$"B{summaryRow + 2}"].Formula = $"=SUM(G{headerRow + 1}:G{headerRow + salesData.Rows.Count})"; reportSheet[$"B{summaryRow + 2}"].FormatString = "$#,##0.00"; for (int col = 0; col <= 6; col++) { reportSheet.AutoSizeColumn(col); } reportWorkbook.EvaluateAll(); reportWorkbook.SaveAs("DatabaseExport.xlsx"); $vbLabelText $csharpLabel 이 예제는 데이터베이스-Excel로의 완벽한 워크플로를 보여줍니다. DataTable는 데이터베이스 검색을 시뮬레이션합니다 - 프로덕션에서는 Entity Framework, Dapper 또는 ADO.NET을 사용하여 실제 데이터베이스 쿼리로 대체하십시오. 수동 매핑 접근법은 형식 및 레이아웃에 대한 완벽한 제어를 제공하며, Microsoft의 데이터 내보내기 모범 사례에 추천됩니다. 코드는 제목, 서식이 있는 헤더 및 데이터 행이 있는 전문 보고서를 생성합니다. 수식 열은 라인 총계를 동적으로 계산합니다. 요약 섹션은 Excel 수식을 사용하여 주문을 세고 수익을 합산하여, 데이터가 변경되면 이러한 값들이 업데이트되도록 보장합니다. DataSets 및 더 큰 데이터 구조를 다루려면, Excel에서 DataSet으로 변환 가이드를 참조하세요. 산출 Excel 보고서를 실제 사용할 수 있도록 만들 필요가 있나요? 라이선스를 획득하여 프로덕션 배포를 위한 IronXL의 전체 잠재력을 해제하세요. 여러 워크시트를 어떻게 처리합니까? 복잡한 Excel 파일은 종종 관련된 데이터를 조직하기 위해 여러 워크시트를 필요로 합니다. IronXL은 워크시트 생성, 액세스 및 정리를 위한 직관적인 방법으로 다중 시트 관리를 간소화합니다. 코드 몇 줄로 워크북 시트를 열고 관리할 수 있습니다. using IronXL; WorkBook companyReport = WorkBook.Create(); // Create department sheets WorkSheet salesSheet = companyReport.CreateWorkSheet("Sales"); WorkSheet inventorySheet = companyReport.CreateWorkSheet("Inventory"); WorkSheet summarySheet = companyReport.CreateWorkSheet("Summary"); // Populate Sales sheet salesSheet["A1"].Value = "Sales Dashboard"; salesSheet["A3"].Value = "Region"; salesSheet["B3"].Value = "Q1 Sales"; salesSheet["C3"].Value = "Q2 Sales"; string[] regions = { "North", "South", "East", "West" }; decimal[] q1Sales = { 250000, 180000, 220000, 195000 }; decimal[] q2Sales = { 275000, 195000, 240000, 210000 }; for (int i = 0; i < regions.Length; i++) { salesSheet[$"A{i + 4}"].Value = regions[i]; salesSheet[$"B{i + 4}"].Value = q1Sales[i]; salesSheet[$"C{i + 4}"].Value = q2Sales[i]; } // Populate Inventory sheet inventorySheet["A1"].Value = "Inventory Status"; string[] products = { "Widget A", "Widget B", "Widget C" }; int[] stock = { 150, 45, 200 }; int[] reorderPoint = { 100, 50, 75 }; for (int i = 0; i < products.Length; i++) { inventorySheet[$"A{i + 4}"].Value = products[i]; inventorySheet[$"B{i + 4}"].Value = stock[i]; inventorySheet[$"C{i + 4}"].Value = reorderPoint[i]; string status = stock[i] <= reorderPoint[i] ? "REORDER" : "OK"; inventorySheet[$"D{i + 4}"].Value = status; if (status == "REORDER") inventorySheet[$"D{i + 4}"].Style.Font.Color = "#FF0000"; } // Summary sheet with cross-sheet formulas summarySheet["A1"].Value = "Company Overview"; summarySheet["A4"].Value = "Total Q1 Sales"; summarySheet["B4"].Formula = "=SUM(Sales!B4:B7)"; summarySheet["A5"].Value = "Total Q2 Sales"; summarySheet["B5"].Formula = "=SUM(Sales!C4:C7)"; summarySheet["A6"].Value = "Products Need Reorder"; summarySheet["B6"].Formula = "=COUNTIF(Inventory!D4:D6,\"REORDER\")"; // Apply consistent formatting across all sheets foreach (WorkSheet sheet in companyReport.WorkSheets) { sheet["A1"].Style.Font.Bold = true; sheet["A1"].Style.Font.Height = 14; } companyReport.SaveAs("CompanyReport.xlsx"); using IronXL; WorkBook companyReport = WorkBook.Create(); // Create department sheets WorkSheet salesSheet = companyReport.CreateWorkSheet("Sales"); WorkSheet inventorySheet = companyReport.CreateWorkSheet("Inventory"); WorkSheet summarySheet = companyReport.CreateWorkSheet("Summary"); // Populate Sales sheet salesSheet["A1"].Value = "Sales Dashboard"; salesSheet["A3"].Value = "Region"; salesSheet["B3"].Value = "Q1 Sales"; salesSheet["C3"].Value = "Q2 Sales"; string[] regions = { "North", "South", "East", "West" }; decimal[] q1Sales = { 250000, 180000, 220000, 195000 }; decimal[] q2Sales = { 275000, 195000, 240000, 210000 }; for (int i = 0; i < regions.Length; i++) { salesSheet[$"A{i + 4}"].Value = regions[i]; salesSheet[$"B{i + 4}"].Value = q1Sales[i]; salesSheet[$"C{i + 4}"].Value = q2Sales[i]; } // Populate Inventory sheet inventorySheet["A1"].Value = "Inventory Status"; string[] products = { "Widget A", "Widget B", "Widget C" }; int[] stock = { 150, 45, 200 }; int[] reorderPoint = { 100, 50, 75 }; for (int i = 0; i < products.Length; i++) { inventorySheet[$"A{i + 4}"].Value = products[i]; inventorySheet[$"B{i + 4}"].Value = stock[i]; inventorySheet[$"C{i + 4}"].Value = reorderPoint[i]; string status = stock[i] <= reorderPoint[i] ? "REORDER" : "OK"; inventorySheet[$"D{i + 4}"].Value = status; if (status == "REORDER") inventorySheet[$"D{i + 4}"].Style.Font.Color = "#FF0000"; } // Summary sheet with cross-sheet formulas summarySheet["A1"].Value = "Company Overview"; summarySheet["A4"].Value = "Total Q1 Sales"; summarySheet["B4"].Formula = "=SUM(Sales!B4:B7)"; summarySheet["A5"].Value = "Total Q2 Sales"; summarySheet["B5"].Formula = "=SUM(Sales!C4:C7)"; summarySheet["A6"].Value = "Products Need Reorder"; summarySheet["B6"].Formula = "=COUNTIF(Inventory!D4:D6,\"REORDER\")"; // Apply consistent formatting across all sheets foreach (WorkSheet sheet in companyReport.WorkSheets) { sheet["A1"].Style.Font.Bold = true; sheet["A1"].Style.Font.Height = 14; } companyReport.SaveAs("CompanyReport.xlsx"); $vbLabelText $csharpLabel 이 예제는 완전한 다중 시트 보고서를 생성합니다. 각 워크시트는 특정 목적을 위해 사용됩니다: 매출 데이터, 재고 추적 및 요약 보기. 요약 시트는 교차 시트 수식을 사용하여 주요 메트릭을 통합합니다. 시트 참조 구문 주의 -- "Sales!B4:B7"은 매출 시트의 B4에서 B7까지의 셀을 참조합니다. 재고 시트는 조건 논리를 사용하여 재고가 적은 항목을 빨간색으로 표시에 즉각적인 주의를 기울입니다. foreach 루프는 모든 시트에 일관된 서식을 적용하여 통합 문서 전반에 걸쳐 전문적인 외관을 유지합니다. 시트 이름은 Excel에서 탭으로 나타나 사용자가 서로 다른 데이터 보기 간에 쉽게 탐색할 수 있도록 합니다. Excel 파일을 C#에서 생성할 때의 모범 사례는 무엇인가요? C#에서 효율적인 Excel 파일 생성을 위해 메모리 사용, 오류 처리 및 배포에 대한 신중한 접근이 필요합니다. 이러한 관행은 Excel 스프레드시트를 프로그래밍적으로 생성할 때 애플리케이션이 효율적으로 확장되고 신뢰성을 유지하도록 보장합니다. 대형 파일에서는 메모리 관리가 중요해집니다. 데이터를 한 번에 전체 데이터세트를 불러오는 대신에 배치 단위로 처리하세요. 다음 패턴은 대용량 내보내기의 경우 메모리 사용량을 예측 가능하게 유지합니다: using IronXL; WorkBook workbook = WorkBook.Create(); WorkSheet sheet = workbook.CreateWorkSheet("Data"); int rowsPerBatch = 1000; int currentRow = 2; sheet["A1"].Value = "ID"; sheet["B1"].Value = "Name"; sheet["C1"].Value = "Value"; // Process records in manageable batches foreach (var batch in GetDataInBatches(rowsPerBatch)) { foreach (var record in batch) { sheet[$"A{currentRow}"].Value = record.Id; sheet[$"B{currentRow}"].Value = record.Name; sheet[$"C{currentRow}"].Value = record.Value; currentRow++; } } workbook.SaveAs("LargeDataset.xlsx"); using IronXL; WorkBook workbook = WorkBook.Create(); WorkSheet sheet = workbook.CreateWorkSheet("Data"); int rowsPerBatch = 1000; int currentRow = 2; sheet["A1"].Value = "ID"; sheet["B1"].Value = "Name"; sheet["C1"].Value = "Value"; // Process records in manageable batches foreach (var batch in GetDataInBatches(rowsPerBatch)) { foreach (var record in batch) { sheet[$"A{currentRow}"].Value = record.Id; sheet[$"B{currentRow}"].Value = record.Name; sheet[$"C{currentRow}"].Value = record.Value; currentRow++; } } workbook.SaveAs("LargeDataset.xlsx"); $vbLabelText $csharpLabel 웹 애플리케이션의 경우, Excel 파일을 메모리에서 생성하고 사용자에게 직접 스트리밍하여 임시 파일을 디스크에 쓰지 않도록 합니다. 생성 로직을 항상 오류 처리로 감싸 충돌을 방지하고 의미 있는 피드백을 제공하세요: // ASP.NET Core controller action with error handling IActionResult DownloadExcel() { try { WorkBook workbook = WorkBook.Create(); WorkSheet sheet = workbook.CreateWorkSheet("Report"); sheet["A1"].Value = "Report Data"; // Populate report data here... var stream = new MemoryStream(); workbook.SaveAs(stream); stream.Position = 0; return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "report.xlsx"); } catch (Exception ex) { Console.WriteLine($"Excel generation failed: {ex.Message}"); return StatusCode(500, "Failed to generate Excel file."); } } // ASP.NET Core controller action with error handling IActionResult DownloadExcel() { try { WorkBook workbook = WorkBook.Create(); WorkSheet sheet = workbook.CreateWorkSheet("Report"); sheet["A1"].Value = "Report Data"; // Populate report data here... var stream = new MemoryStream(); workbook.SaveAs(stream); stream.Position = 0; return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "report.xlsx"); } catch (Exception ex) { Console.WriteLine($"Excel generation failed: {ex.Message}"); return StatusCode(500, "Failed to generate Excel file."); } } $vbLabelText $csharpLabel 아래 표는 주요 모범 사례와 적용 시점을 요약합니다: C#에서 Excel 생성에 대한 IronXL 모범 사례 시나리오 권장 접근 방식 혜택 Large datasets (>10,000 rows) 청크된 쓰기로 배치 처리 메모리 사용량 감소 웹 애플리케이션 다운로드 임시 파일 대신 MemoryStream 사용 디스크 IO 없음, 빠른 응답 속도 생산 배포 유효한 IronXL 라이선스 키 포함 생성된 파일에 워터마크 없음 통화 및 날짜 FormatString 속성 사용 Excel에서 올바른 로케일 표시 동적 보고서 SaveAs() 전에 EvaluateAll() 호출 수식이 계산된 값을 보여줌 IronXL은 향상된 권한 없이 제한된 환경에서 작동하므로 공유 호스팅 및 컨테이너화된 배포에 적합합니다. 배포 패키지에 IronXL 라이선스 파일을 포함시키고, 애플리케이션이 필요한 임시 파일 작업에 대한 쓰기 권한을 가졌는지 확인하세요. 추가 배포 가이드를 위해, IronXL 기능 개요와 전체 API 문서를 참조하세요. 여기서 어디로 갈 수 있습니까? IronXL은 C#에서의 Excel 파일 생성을 복잡한 도전 과제에서 직접적인 코딩으로 변환합니다. 워크북을 생성하고, 셀을 채우고, 서식을 적용하며, 수식을 사용하고, 데이터베이스 데이터를 내보내며, 여러 워크시트를 관리하는 방법을 배웠습니다 -- 모든 것이 Microsoft Office 의존성 없이 가능합니다. 이 기술들은 Windows, Linux 및 클라우드 플랫폼의 .NET 10을 대상으로 일관되게 작동합니다. 더 깊이 탐구하려면 기존 Excel 파일을 읽고 수정하는 IronXL 방법 안내서나 제작에서 시작하기 위한 체험판 라이선스 페이지를 탐색하세요. 프로젝트 요구 사항과 규모에 맞는 라이선스 옵션을 보세요. 자주 묻는 질문 C#을 사용하여 Excel 파일을 생성하려면 어떻게 해야 하나요? IronXL 사용하면 Microsoft Office 설치나 복잡한 COM 상호 운용 없이도 Excel 파일을 생성할 수 있는 간단한 API를 제공하므로 C#에서 Excel 파일을 생성할 수 있습니다. C#에서 Excel 파일을 사용하려면 Microsoft Office가 필수적인가요? 아니요, Microsoft Office는 필요하지 않습니다. IronXL 사용하면 Office에 의존하지 않고 C#으로 Excel 파일을 생성하고 조작할 수 있습니다. 기존 방식에 비해 IronXL 사용하는 것의 장점은 무엇인가요? IronXL Microsoft Office 및 복잡한 COM 상호 운용성이 필요 없도록 하여 Excel 파일 생성 프로세스를 간소화하고, Excel 파일 생성 및 조작을 위한 직관적인 API를 제공합니다. IronXL 사용하여 데이터베이스와 엑셀 파일을 통합할 수 있나요? 네, IronXL 데이터베이스 통합과 같은 고급 작업을 지원하여 데이터를 엑셀 파일로 효율적으로 내보낼 수 있습니다. IronXL 로 생성할 수 있는 파일 형식은 무엇인가요? IronXL XLS 및 XLSX 파일 형식을 모두 생성할 수 있어 다양한 Excel 파일 생성 요구 사항에 맞춰 활용할 수 있습니다. IronXL Excel 파일의 고급 서식 지정을 지원합니까? 네, IronXL 고급 서식 기능을 지원하여 Excel 파일의 모양과 구조를 사용자 지정할 수 있습니다. IronXL 사용하여 스프레드시트 생성을 자동화하는 것이 가능할까요? 네, IronXL 스프레드시트 생성을 자동화하는 도구와 기술을 제공하여 보고서 작성 및 데이터 내보내기와 같은 프로세스를 간소화합니다. .NET 애플리케이션에서 Excel을 사용하여 보고서를 만드는 방법은 무엇입니까? IronXL .NET 애플리케이션 내에서 직접 Excel 파일을 생성하여 보고서를 쉽게 만들 수 있는 방법을 제공하며, 강력한 데이터 시각화 솔루션을 제공합니다. C#에서 Excel을 활용하기 위한 필수적인 기술은 무엇인가요? IronXL 사용하여 C#에서 Excel을 활용하는 데 필요한 핵심 기술에는 기본 스프레드시트 생성, 고급 서식 지정 및 데이터베이스 통합이 포함됩니다. C#에서 IronXL 사용하는 방법에 대한 문서는 어디에서 찾을 수 있나요? Iron Software 웹사이트에서 IronXL C#에서 사용하는 방법에 대한 자세한 문서를 찾을 수 있으며, 여기에는 다양한 사용 사례에 대한 튜토리얼과 예제가 포함되어 있습니다. 커티스 차우 지금 바로 엔지니어링 팀과 채팅하세요 기술 문서 작성자 커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, 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 통합 문서를 로드하는 방법을 알아보세요. 더 읽어보기 StreamReader 대신 C#에서 Excel 파일을 읽는 방법OleDb와 IronXL 사용하여 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 통합 문서를 로드하는 방법을 알아보세요. 더 읽어보기