푸터 콘텐츠로 바로가기
IRONXL 사용하여

C#을 사용하여 Interop 없이 Excel에서 피벗 테이블을 만드는 방법

C#와 Excel을 사용하여 피벗 테이블을 생성하는 것은 적절한 라이브러리를 선택하면 간단합니다 -- 엑셀 상호 운용성은 각각의 기기에 Office가 필요하지만, IronXL은 .NET이 작동하는 모든 곳에서 사용 가능합니다. 이 가이드는 두 가지 접근 방식을 설정, 데이터 집계, 필드 구성 및 배포 고려 사항을 완전한 코드 예제와 함께 설명하여 프로젝트에 맞는 적절한 결정을 내릴 수 있도록 합니다.

Excel에서 C# Interop vs IronXL을 사용하여 피벗 테이블을 생성하는 방법: 이미지 1 - IronXL

엑셀 상호 운용성과 IronXL의 차이점은 무엇입니까?

코드 한 줄을 작성하기 전에 각각의 접근 방식이 내부적으로 어떻게 작동하는지 이해하는 것이 도움이 됩니다. 엑셀 상호 운용성은 C#에서 Microsoft Excel을 직접 실행하기 위해 COM (Component Object Model)을 사용합니다. .NET 프로세스는 실행 중인 Excel 인스턴스와 통신하므로, Excel 자체가 기기에 설치되어 있어야 합니다. 조작하는 모든 개체 -- 워크북, 워크시트, 범위, 피벗 캐시 -- 은 COM 래퍼이며, 프로세스 누수를 방지하기 위해 각각 명시적으로 해제해야 합니다.

IronXL은 근본적으로 다른 경로를 택합니다. Open XML 파일 형식을 직접 읽고 작성하며, Excel을 실행하지 않습니다. 이 결과는 오피스 설치나 라이선스에 의존하지 않는, 표준 .NET 라이브러리로, 익숙한 객체 패턴과 가비지 수집 메모리를 제공합니다. 이 아키텍처는 IronXL을 서버 측 업무, Docker 컨테이너, Linux 호스트 및 .NET 6, .NET 8 또는 .NET 10 환경에서 적합하게 만듭니다.

엑셀 상호 운용성 vs IronXL -- 한눈에 보기
기준 엑셀 상호 운용성 IronXL
오피스 필요 아니요
Windows 전용 아니오 -- 크로스 플랫폼
메모리 관리 수동 COM 해제 자동 (.NET GC)
서버 배포 어려움 단순함
네이티브 피벗 테이블 전체 Excel 피벗 API LINQ를 통한 데이터 집계
라이선스 필요 Office 라이선스 IronXL 라이선스만 필요

Excel에서 C# Interop vs IronXL을 사용하여 피벗 테이블을 생성하는 방법: 이미지 2 - 크로스 플랫폼

각 라이브러리는 어떻게 설치하나요?

엑셀 상호 운용성 설정

엑셀 상호 운용성은 NuGet 패키지로 제공됩니다. 프로젝트에서 다음 중 하나를 실행하세요:

Install-Package Microsoft.Office.Interop.Excel
dotnet add package Microsoft.Office.Interop.Excel
Install-Package Microsoft.Office.Interop.Excel
dotnet add package Microsoft.Office.Interop.Excel
SHELL

패키지 하나만으로는 충분하지 않다는 점을 주의하세요 -- 대상 기기에 동일한 버전의 Microsoft Excel이 설치되고 올바르게 라이선스되어 있어야 합니다. 이 의존성은 대부분의 서버, 컨테이너 및 클라우드 시나리오를 제외합니다.

Excel에서 C# Interop vs IronXL을 사용하여 피벗 테이블을 생성하는 방법: 이미지 3 - 엑셀 상호 운용성 설치

IronXL 설정

IronXL을 NuGet을 통해 설치하세요, 추가 시스템 요구 사항 없음:

Install-Package IronXl.Excel
dotnet add package IronXl.Excel
Install-Package IronXl.Excel
dotnet add package IronXl.Excel
SHELL

설치 후, .NET을 지원하는 모든 플랫폼에서 즉시 Excel 파일을 읽고 작성할 수 있습니다. 오피스 라이선스, COM 등록, 서버 구성 없음. 오프라인 설치 및 프로젝트 참조 설정을 포함한 추가 옵션은 IronXL 설치 가이드를 참조하세요.

Excel에서 C# Interop vs IronXL을 사용하여 피벗 테이블을 생성하는 방법: 이미지 4 - 설치

지금 바로 IronXL으로 시작하세요.
green arrow pointer

C# Interop으로 Excel 피벗 테이블을 어떻게 생성합니까?

Interop 피벗 테이블 워크플로우는 엄격한 순서를 따릅니다: 먼저 소스 범위에서 피벗 캐시를 생성하고, 별도의 워크시트에서 PivotTable 객체를 만든 후 필드 방위를 구성합니다. 다음 예시는 .NET 10과 호환되는 최상위 수준의 C# 문장을 사용합니다:

using Excel = Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;

// Launch Excel and set up workbooks
var excelApp = new Excel.Application();
excelApp.Visible = false;
var workbook = excelApp.Workbooks.Add();
var dataSheet = (Excel.Worksheet)workbook.Worksheets[1];
dataSheet.Name = "SalesData";
var pivotSheet = (Excel.Worksheet)workbook.Worksheets.Add();
pivotSheet.Name = "Pivot";

// Populate header row
dataSheet.Cells[1, 1] = "Product";
dataSheet.Cells[1, 2] = "Region";
dataSheet.Cells[1, 3] = "Sales";

// Add sample data rows
object[,] rows = {
    { "Laptop",   "아니요rth", 1200 },
    { "Laptop",   "South", 1500 },
    { "Phone",    "아니요rth",  800 },
    { "Phone",    "South",  950 },
    { "Tablet",   "East",   600 },
    { "Tablet",   "West",   750 },
    { "Monitor",  "아니요rth",  400 },
    { "Monitor",  "South",  500 },
    { "Keyboard", "East",   300 },
};
for (int i = 0; i < rows.GetLength(0); i++)
{
    dataSheet.Cells[i + 2, 1] = rows[i, 0];
    dataSheet.Cells[i + 2, 2] = rows[i, 1];
    dataSheet.Cells[i + 2, 3] = rows[i, 2];
}

// Build pivot cache from source range
Excel.Range dataRange = dataSheet.Range["A1:C10"];
Excel.PivotCache pivotCache = workbook.PivotCaches().Create(
    Excel.XlPivotTableSourceType.xlDatabase, dataRange);

// Create the PivotTable on the pivot sheet
Excel.PivotTables pivotTables = (Excel.PivotTables)pivotSheet.PivotTables();
Excel.PivotTable pivotTable = pivotTables.Add(
    pivotCache, pivotSheet.Range["A3"], "SalesPivot");

// Assign field orientations
((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;

// Enable grand totals
pivotTable.RowGrand = true;
pivotTable.ColumnGrand = true;

// Save and close
workbook.SaveAs(@"C:\output\pivot_interop.xlsx");
workbook.Close(false);
excelApp.Quit();

// Release every COM object -- skipping any of these causes Excel to stay in memory
Marshal.ReleaseComObject(pivotTable);
Marshal.ReleaseComObject(pivotTables);
Marshal.ReleaseComObject(pivotCache);
Marshal.ReleaseComObject(dataRange);
Marshal.ReleaseComObject(pivotSheet);
Marshal.ReleaseComObject(dataSheet);
Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(excelApp);
using Excel = Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;

// Launch Excel and set up workbooks
var excelApp = new Excel.Application();
excelApp.Visible = false;
var workbook = excelApp.Workbooks.Add();
var dataSheet = (Excel.Worksheet)workbook.Worksheets[1];
dataSheet.Name = "SalesData";
var pivotSheet = (Excel.Worksheet)workbook.Worksheets.Add();
pivotSheet.Name = "Pivot";

// Populate header row
dataSheet.Cells[1, 1] = "Product";
dataSheet.Cells[1, 2] = "Region";
dataSheet.Cells[1, 3] = "Sales";

// Add sample data rows
object[,] rows = {
    { "Laptop",   "아니요rth", 1200 },
    { "Laptop",   "South", 1500 },
    { "Phone",    "아니요rth",  800 },
    { "Phone",    "South",  950 },
    { "Tablet",   "East",   600 },
    { "Tablet",   "West",   750 },
    { "Monitor",  "아니요rth",  400 },
    { "Monitor",  "South",  500 },
    { "Keyboard", "East",   300 },
};
for (int i = 0; i < rows.GetLength(0); i++)
{
    dataSheet.Cells[i + 2, 1] = rows[i, 0];
    dataSheet.Cells[i + 2, 2] = rows[i, 1];
    dataSheet.Cells[i + 2, 3] = rows[i, 2];
}

// Build pivot cache from source range
Excel.Range dataRange = dataSheet.Range["A1:C10"];
Excel.PivotCache pivotCache = workbook.PivotCaches().Create(
    Excel.XlPivotTableSourceType.xlDatabase, dataRange);

// Create the PivotTable on the pivot sheet
Excel.PivotTables pivotTables = (Excel.PivotTables)pivotSheet.PivotTables();
Excel.PivotTable pivotTable = pivotTables.Add(
    pivotCache, pivotSheet.Range["A3"], "SalesPivot");

// Assign field orientations
((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;

// Enable grand totals
pivotTable.RowGrand = true;
pivotTable.ColumnGrand = true;

// Save and close
workbook.SaveAs(@"C:\output\pivot_interop.xlsx");
workbook.Close(false);
excelApp.Quit();

// Release every COM object -- skipping any of these causes Excel to stay in memory
Marshal.ReleaseComObject(pivotTable);
Marshal.ReleaseComObject(pivotTables);
Marshal.ReleaseComObject(pivotCache);
Marshal.ReleaseComObject(dataRange);
Marshal.ReleaseComObject(pivotSheet);
Marshal.ReleaseComObject(dataSheet);
Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(excelApp);
$vbLabelText   $csharpLabel

모든 COM 래퍼는 일치하는 Marshal.ReleaseComObject 호출이 필요합니다. 참조를 하나라도 놓치는 경우 Excel 프로세스가 백그라운드에 남아 메모리와 파일 핸들을 소모하게 되며, 이는 호스트 프로세스가 종료될 때까지 지속됩니다. 이 정리 작업 부담은 스프레드시트 작업의 복잡성에 비례해 증가합니다.

IronXL로 동일한 결과를 얻으려면 어떻게 해야 하나요?

IronXL은 Interop과 같은 방식으로 네이티브 피벗 테이블 API를 노출하지 않습니다 -- Open XML 피벗 형식은 수백 개의 XML 속성이 있으며, 대부분의 비즈니스 요구 사항은 명시적인 LINQ 집계로 작성된 평범한 C#으로 더 신뢰성 있게 충족됩니다. 출력은 피벗 캐시 새로 고침 없이 파일을 열 때 올바르게 재계산되는 깔끔한 요약 시트입니다.

using IronXL;
using System.Data;

// Create workbook and populate source data
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet dataSheet = workbook.CreateWorkSheet("SalesData");

dataSheet["A1"].Value = "Product";
dataSheet["B1"].Value = "Region";
dataSheet["C1"].Value = "Sales";

object[,] rows = {
    { "Laptop",   "아니요rth", 1200 },
    { "Laptop",   "South", 1500 },
    { "Phone",    "아니요rth",  800 },
    { "Phone",    "South",  950 },
    { "Tablet",   "East",   600 },
    { "Tablet",   "West",   750 },
    { "Monitor",  "아니요rth",  400 },
    { "Monitor",  "South",  500 },
    { "Keyboard", "East",   300 },
};
for (int i = 0; i < rows.GetLength(0); i++)
{
    dataSheet[$"A{i + 2}"].Value = rows[i, 0];
    dataSheet[$"B{i + 2}"].Value = rows[i, 1];
    dataSheet[$"C{i + 2}"].Value = rows[i, 2];
}

// Aggregate data with LINQ -- equivalent to a pivot table row/column/value layout
DataTable table = dataSheet["A1:C10"].ToDataTable(true);
var summary = table.AsEnumerable()
    .GroupBy(row => row.Field<string>("Product"))
    .Select((group, idx) => new
    {
        Product    = group.Key,
        TotalSales = group.Sum(r => Convert.ToDecimal(r["Sales"])),
        RegionCount = group.Select(r => r.Field<string>("Region")).Distinct().Count(),
        RowIndex   = idx + 2
    })
    .OrderByDescending(x => x.TotalSales);

// Write the summary sheet
WorkSheet summarySheet = workbook.CreateWorkSheet("Summary");
summarySheet["A1"].Value = "Product";
summarySheet["B1"].Value = "Total Sales";
summarySheet["C1"].Value = "Regions";

foreach (var item in summary)
{
    summarySheet[$"A{item.RowIndex}"].Value = item.Product;
    summarySheet[$"B{item.RowIndex}"].Value = (double)item.TotalSales;
    summarySheet[$"C{item.RowIndex}"].Value = item.RegionCount;
}

// Apply currency format to the sales column
summarySheet["B:B"].FormatString = "$#,##0.00";

// Bold the header row
summarySheet["A1:C1"].Style.Font.Bold = true;

// Save -- no COM cleanup needed
workbook.SaveAs(@"C:\output\analysis_ironxl.xlsx");
using IronXL;
using System.Data;

// Create workbook and populate source data
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet dataSheet = workbook.CreateWorkSheet("SalesData");

dataSheet["A1"].Value = "Product";
dataSheet["B1"].Value = "Region";
dataSheet["C1"].Value = "Sales";

object[,] rows = {
    { "Laptop",   "아니요rth", 1200 },
    { "Laptop",   "South", 1500 },
    { "Phone",    "아니요rth",  800 },
    { "Phone",    "South",  950 },
    { "Tablet",   "East",   600 },
    { "Tablet",   "West",   750 },
    { "Monitor",  "아니요rth",  400 },
    { "Monitor",  "South",  500 },
    { "Keyboard", "East",   300 },
};
for (int i = 0; i < rows.GetLength(0); i++)
{
    dataSheet[$"A{i + 2}"].Value = rows[i, 0];
    dataSheet[$"B{i + 2}"].Value = rows[i, 1];
    dataSheet[$"C{i + 2}"].Value = rows[i, 2];
}

// Aggregate data with LINQ -- equivalent to a pivot table row/column/value layout
DataTable table = dataSheet["A1:C10"].ToDataTable(true);
var summary = table.AsEnumerable()
    .GroupBy(row => row.Field<string>("Product"))
    .Select((group, idx) => new
    {
        Product    = group.Key,
        TotalSales = group.Sum(r => Convert.ToDecimal(r["Sales"])),
        RegionCount = group.Select(r => r.Field<string>("Region")).Distinct().Count(),
        RowIndex   = idx + 2
    })
    .OrderByDescending(x => x.TotalSales);

// Write the summary sheet
WorkSheet summarySheet = workbook.CreateWorkSheet("Summary");
summarySheet["A1"].Value = "Product";
summarySheet["B1"].Value = "Total Sales";
summarySheet["C1"].Value = "Regions";

foreach (var item in summary)
{
    summarySheet[$"A{item.RowIndex}"].Value = item.Product;
    summarySheet[$"B{item.RowIndex}"].Value = (double)item.TotalSales;
    summarySheet[$"C{item.RowIndex}"].Value = item.RegionCount;
}

// Apply currency format to the sales column
summarySheet["B:B"].FormatString = "$#,##0.00";

// Bold the header row
summarySheet["A1:C1"].Style.Font.Bold = true;

// Save -- no COM cleanup needed
workbook.SaveAs(@"C:\output\analysis_ironxl.xlsx");
$vbLabelText   $csharpLabel

해제할 COM 객체가 없으며, 종료할 Excel 프로세스도 없고, 관리할 오피스 라이선스도 없습니다. 동일한 코드는 Linux, macOS, Windows에서 수정 없이 컴파일하고 실행됩니다. 집계 API에 대한 자세한 정보는 IronXL WorkSheet 문서를 방문하세요.

산출

Excel에서 C# Interop vs IronXL을 사용하여 피벗 테이블을 생성하는 방법: 이미지 6 - IronXL 출력

Excel에서 C# Interop vs IronXL을 사용하여 피벗 테이블을 생성하는 방법: 이미지 7 - 요약 출력

배포 및 유지 관리의 주요 차이점은 무엇입니까?

배포 요구사항

Interop 기반 애플리케이션을 배포하려면 대상 환경이 Windows를 실행하고 있으며, 올바른 오피스 버전이 설치되어 있고, 서버의 COM 자동화 권한이 구성되어 있는지 확인해야 합니다. 클라우드 호스팅 환경 및 컨테이너화된 작업 부하는 일반적으로 가상화된 Windows 데스크톱 인프라를 추가하지 않으면 이러한 요구 사항을 충족할 수 없으며, 이는 비용과 운영 복잡도를 크게 증가시킵니다.

IronXL은 이러한 제약이 없습니다. NuGet 패키지를 추가하고, 대상 프레임워크를 .NET 6 이상으로 설정하세요, 그러면 애플리케이션이 모든 호스트에 배포됩니다 -- Linux 컨테이너, Azure App Service on Linux, AWS Lambda 및 온프레미스 Windows 서버를 포함하여. IronXL 시스템 요구 사항 페이지에는 전체 호환성 매트릭스가 나와 있습니다.

오류 처리 및 디버깅

Interop 실패는 사용자에게 보이는 메시지로 매핑하기 어려운 COM 예외 (COMException)로 나타납니다. 설치된 Office 버전과 Interop 어셈블리 간의 버전 불일치는 또 다른 실패 모드를 추가합니다. 이 문제를 디버그하려면 보통 개발 머신에서 정확한 Office 버전을 재현해야 합니다.

IronXL은 설명이 포함된 표준 System.Exception 하위 클래스를 던집니다. try-catch 블록으로 파일 작업을 감싸고 COM 오류 코드를 이해하지 않고도 의미 있는 피드백을 제공할 수 있습니다. IronXL 문제 해결 가이드는 일반적인 예외와 그 해결책을 다룹니다.

메모리 및 성능

COM 객체는 관리되지 않는 메모리를 유지합니다. 여러 워크시트를 처리하거나 루프에서 코드가 실행될 경우 각 참조를 정확하게 해제하지 않으면 시간이 지남에 따라 메모리 공간이 증가합니다. 이는 프로덕션 사고를 일으킬 때까지 감지하기 어려운 문제입니다. Interop은 단일 Excel 창을 구동하기 때문에 본질적으로 단일 스레드 방식입니다.

IronXL은 .NET 가비지 컬렉터가 백업하는 관리 객체를 사용합니다. 객체가 범위를 벗어난 경우 메모리는 자동으로 회수됩니다. 잠금을 사용하여 보호해야 할 공유 COM 상태가 없기 때문에 여러 Excel 파일을 병렬로 처리하는 것이 간단합니다.

두 가지 접근 방식을 어떻게 선택합니까?

올바른 도구는 코드가 실행되는 위치와 네이티브 피벗 테이블 XML이 필요한지 여부의 두 가지 제약 조건에 따라 달라집니다.

엑셀 상호 운용성을 선택하세요:

  • 워크로드는 Office가 이미 설치된 Windows 데스크톱 머신에서만 실행됩니다
  • 출력 파일에 정확한 네이티브 피벗 테이블 포맷(슬라이서, 그룹화된 날짜 필드, 계산된 항목)이 필요합니다
  • 기존의 Interop 코드베이스를 유지하고 전체 재작성은 정당하지 않습니다

IronXL을 선택하세요:

  • 응용 프로그램이 서버, 컨테이너 또는 클라우드 기능에서 실행됩니다
  • 크로스 플랫폼 또는 Linux 배포가 필요합니다
  • 테스트 가능한 유닛 테스트로 데이터 집계 논리를 원하며 Excel 프로세스에 의존하지 않습니다
  • 대규모 또는 병렬로 Excel 파일을 처리해야 합니다

대부분의 새로운 .NET 10 프로젝트에서는 IronXL이 실용적인 기본 선택입니다. IronXL 라이브러리는 또한 C#에서 Excel 파일 읽기, 차트 생성하기, 셀 스타일 적용, 수식 작업하기, Excel 데이터를 DataTable에 내보내기를 다루고 있어 스택에 여러 라이브러리가 필요하지 않도록 합니다.

Excel에서 C# Interop vs IronXL을 사용하여 피벗 테이블을 생성하는 방법: 이미지 8 - 기능

추가적인 IronXL 기능은 데이터 분석 지원을 어떻게 하나요?

기본 집계를 넘어서 IronXL은 더욱 풍부한 데이터 분석 워크플로우를 지원하는 여러 기능을 제공합니다:

데이터 정렬 및 필터링

요약 시트를 작성하기 전에 범위를 오름차순 또는 내림차순으로 정렬할 수 있습니다. 이는 출력이 항상 일관된 순서로 데이터를 표시하도록 하여 다운스트림 처리를 보다 예측 가능하게 만듭니다. IronXL 정렬 문서에서 범위 수준의 정렬 옵션을 확인하세요.

조건부 서식 적용

조건부 서식 규칙을 프로그래밍적으로 적용하여 초과나 임계값을 강조 표시합니다. 예를 들어, 요약 시트의 셀이 판매 목표 이하일 경우 빨간색으로 채색하여 사용자가 규칙을 수동으로 구성할 필요 없이 한눈에 볼 수 있습니다.

기존 Excel 파일 읽기

소스 데이터가 데이터베이스가 아닌 기존 스프레드시트에서 온 경우, WorkBook.Load를 사용하여 직접 로드할 수 있습니다:

using IronXL;

WorkBook existing = WorkBook.Load(@"C:\data\sales_report.xlsx");
WorkSheet sheet = existing.WorkSheets[0];

// Read column C starting at row 2
var salesValues = sheet["C2:C100"]
    .Where(cell => cell.Value != null && cell.Value.ToString() != string.Empty)
    .Select(cell => cell.DecimalValue)
    .ToList();

decimal total = salesValues.Sum();
Console.WriteLine($"Total sales from file: {total:C}");
using IronXL;

WorkBook existing = WorkBook.Load(@"C:\data\sales_report.xlsx");
WorkSheet sheet = existing.WorkSheets[0];

// Read column C starting at row 2
var salesValues = sheet["C2:C100"]
    .Where(cell => cell.Value != null && cell.Value.ToString() != string.Empty)
    .Select(cell => cell.DecimalValue)
    .ToList();

decimal total = salesValues.Sum();
Console.WriteLine($"Total sales from file: {total:C}");
$vbLabelText   $csharpLabel

이 패턴은 .xlsx, .xls, .csv 및 IronXL이 지원하는 다른 형식에도 작동합니다. 지원되는 형식에 대한 세부 정보는 IronXL 파일 형식 문서에 나타납니다.

CSV로 내보내기

요약 워크시트를 생성한 후 Excel을 수락하지 않는 다운스트림 시스템을 위해 CSV로 내보낼 수 있습니다:

workbook.SaveAsCsv(@"C:\output\summary.csv");
workbook.SaveAsCsv(@"C:\output\summary.csv");
$vbLabelText   $csharpLabel

이는 최종 소비자가 데이터베이스 가져오기 도구나 데이터 웨어하우스 로더인 ETL 파이프라인에서 특히 유용합니다.

IronXL을 무료로 시작하려면 어떻게 해야 하나요?

IronXL은 구독에 대한 약정 없이 전체 기능 세트를 평가할 수 있는 무료 체험판 라이센스로 사용할 수 있습니다. 체험판은 출력 파일에 워터마크를 삽입하며, 프로덕션 라이센스 키를 적용하면 이를 제거할 수 있습니다.

코드에서 라이센스 키를 활성화하려면 IronXL 작업 전 설정합니다:

IronXl.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
IronXl.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
$vbLabelText   $csharpLabel

환경 변수 (IRONXL_LICENSEKEY) 또는 ASP.NET Core 프로젝트에서 appsettings.json을 통해 키를 설정할 수도 있습니다. IronXL 라이센스 페이지는 팀 및 조직 옵션을 포함한 이용 가능한 모든 계층을 설명합니다.

프로덕션 배포를 위해 IronXL 배포 문서 및 ASP.NET Core, Azure Functions, Docker를 포괄하는 패턴에 대한 IronXL 튜토리얼 라이브러리를 검토하세요.

Excel에서 C# Interop vs IronXL을 사용하여 피벗 테이블을 생성하는 방법: 이미지 9 - 라이선싱

다음 단계는 어떻게 해야 하나요?

C#의 Excel 피벗 테이블은 Office 종속성이나 COM 복잡성을 의미할 필요가 없습니다. IronXL을 사용하면, 모든 플랫폼에서 실행되는 순수 .NET 코드를 작성하고, 메모리를 자동으로 처리하며, 단위 테스트 프레임워크 및 CI/CD 파이프라인과 자연스럽게 통합됩니다.

무료 IronXL 체험판을 다운로드하고 이 가이드의 예제를 사용하여 귀하의 데이터를 활용해 보세요. 질문이 있는 경우, IronXL 커뮤니티 포럼지원 포털이 체험판 및 라이선스 사용자를 위해 제공됩니다. 배포를 준비가 되면, 라이선스 옵션을 검토하여 팀 크기 및 사용량에 맞는 플랜을 찾으세요.

자주 묻는 질문

피벗 테이블을 만들 때 Excel Interop 대신 IronXL 사용하는 장점은 무엇입니까?

IronXL 기존 Excel Interop 방식보다 더 현대적이고 효율적인 방식으로 Excel 파일에서 피벗 테이블을 생성할 수 있도록 지원합니다. 프로세스를 간소화하고 필요한 상용구 코드의 양을 줄여줍니다.

IronXL 사용하여 C#으로 Excel에서 피벗 테이블을 만들 수 있나요?

네, IronXL C#을 사용하여 Excel에서 피벗 테이블을 만드는 간단한 방법을 제공합니다. 이를 통해 개발자는 Excel Interop에 의존하지 않고도 Excel 파일을 쉽게 조작할 수 있습니다.

IronXL .NET 애플리케이션과 호환됩니까?

IronXL .NET 애플리케이션과 완벽하게 호환되므로 Excel 기능을 C# 프로젝트에 통합하려는 개발자에게 탁월한 선택입니다.

IronXL 사용하려면 시스템에 Excel이 설치되어 있어야 합니까?

아니요, IronXL 시스템에 Microsoft Excel이 설치되어 있을 필요가 없습니다. Excel Interop처럼 Excel 설치가 필수적인 것이 아니라, 독립적으로 작동한다는 점에서 큰 장점입니다.

IronXL 피벗 테이블 생성 과정을 어떻게 간소화합니까?

IronXL 사용자 친화적인 API를 제공하여 복잡한 상용구 코드 작성 필요성을 줄여 개발 과정을 간소화하고 효율성을 높입니다.

IronXL 사용을 위한 시스템 요구 사항은 무엇입니까?

IronXL .NET Framework 호환되는 환경을 필요로 하지만 Microsoft Excel이 설치되어 있을 필요는 없으므로 배포가 간편하고 종속성이 줄어듭니다.

IronXL 대용량 Excel 파일을 효율적으로 처리할 수 있습니까?

네, IronXL 은 대용량 Excel 파일을 효율적으로 처리하도록 설계되어 있어 상당한 양의 데이터를 처리해야 하는 비즈니스 애플리케이션에 적합합니다.

IronXL 사용하는 데 있어 Excel Interop에 비해 학습 곡선이 더 높은가요?

IronXL 은 직관적이고 배우기 쉽도록 설계되었으며, 포괄적인 문서와 예제를 제공하여 복잡한 Excel Interop에 비해 도입이 훨씬 쉽습니다.

IronXL 피벗 테이블 생성 외에 어떤 유형의 Excel 작업을 수행할 수 있습니까?

IronXL Excel 파일 읽기 및 쓰기, 셀 서식 지정, 수식 적용 등 다양한 Excel 작업을 수행할 수 있습니다.

IronXL 피벗 테이블을 Excel 이외의 형식으로 내보낼 수 있습니까?

IronXL 주로 Excel 작업에 초점을 맞추고 있지만, 프로젝트 요구 사항에 따라 CSV 및 PDF와 같은 다른 형식으로 데이터를 내보내는 것도 지원합니다.

커티스 차우
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me