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

.NET Core 용 Excel API 구축: XLSX 파일 생성, 읽기 및 내보내기

IronXL를 사용하면 .NET Core에서 Excel API를 쉽게 구축할 수 있습니다. 패키지를 설치하고, WorkBook를 생성한 후, 셀을 채우고 스트림을 직접 반환하십시오. Microsoft Office가 필요 없습니다.

Install-Package IronXl.Excel

IronXL은 전적으로 관리된 .NET 코드에서 XLSX 생성, 데이터 가져오기, 다중 형식 내보내기, 셀 스타일을 처리합니다. 이는 프로그램 방식으로 Excel 지원이 필요한 모든 ASP.NET Core API에 실용적인 선택이 되며, Windows, Linux, macOS에서 작동합니다.

.NET Core 프로젝트에 IronXL을 설치하는 방법은?

NuGet 패키지 관리자 콘솔을 통해 IronXL을 모든 .NET 10 프로젝트에 추가하세요:

Install-Package IronXl.Excel

또는 Visual Studio NuGet UI에서 IronXl을 검색하여 설치하세요. NuGet에서 패키지 이름은 IronXl.Excel입니다.

설치 후, using IronXL;를 추가하여 워크북을 생성하거나 읽는 모든 파일에 추가하십시오. 호스트 머신에 Office 상호 운용 라이브러리, COM 등록 및 Microsoft Excel 설치가 필요하지 않습니다 -- IronXL은 전적으로 단독 실행됩니다.

IronXL은 .NET Standard 2.0 이상을 대상으로 하며, 이는 동일한 라이브러리가 .NET Core, .NET 5/6/7/8/9/10 및 .NET Framework 프로젝트에서 작동함을 의미합니다. IronXL 문서는 모든 지원 환경을 자세히 다룹니다.

.NET Core에서 프로그램 방식으로 Excel 파일을 생성하는 방법은?

IronXL의 직관적인 API를 사용하여 몇 줄의 코드만으로 새로 시작하여 Excel 문서를 생성할 수 있습니다. 라이브러리는 깔끔한 객체 모델을 통해 책자, 워크시트, 셀 스타일 및 수식에 대한 완전한 제어를 제공합니다.

다음은 형식화된 데이터를 가진 새로운 Excel 책자를 생성하고, 워크시트 관리를 시연하며, 셀 스타일을 적용하는 컨트롤러 작업입니다:

using IronXL;
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/[controller]")]
public class ExcelController : ControllerBase
{
    [HttpGet("create-report")]
    public IActionResult CreateSalesReport()
    {
        // Create a new Excel workbook in XLSX format
        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet worksheet = workbook.CreateWorkSheet("Sales Data");

        // Set header labels in the first row
        worksheet["A1"].Value = "Product";
        worksheet["B1"].Value = "Q1 Sales";
        worksheet["C1"].Value = "Q2 Sales";
        worksheet["D1"].Value = "Total";

        // Bold headers and apply a blue background with white text
        worksheet["A1:D1"].Style.Font.Bold = true;
        worksheet["A1:D1"].Style.SetBackgroundColor("#4472C4");
        worksheet["A1:D1"].Style.Font.SetColor("#FFFFFF");

        // Add data rows
        worksheet["A2"].Value = "Widget Pro";
        worksheet["B2"].Value = 15000;
        worksheet["C2"].Value = 18500;
        worksheet["D2"].Formula = "=B2+C2";

        worksheet["A3"].Value = "Gadget Plus";
        worksheet["B3"].Value = 22000;
        worksheet["C3"].Value = 24000;
        worksheet["D3"].Formula = "=B3+C3";

        // Apply currency number format to sales columns
        worksheet["B2:D3"].Style.Format = "$#,##0";

        // Stream the XLSX file back to the caller
        var stream = workbook.ToStream();
        return File(
            stream,
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            "SalesReport.xlsx");
    }
}
using IronXL;
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/[controller]")]
public class ExcelController : ControllerBase
{
    [HttpGet("create-report")]
    public IActionResult CreateSalesReport()
    {
        // Create a new Excel workbook in XLSX format
        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet worksheet = workbook.CreateWorkSheet("Sales Data");

        // Set header labels in the first row
        worksheet["A1"].Value = "Product";
        worksheet["B1"].Value = "Q1 Sales";
        worksheet["C1"].Value = "Q2 Sales";
        worksheet["D1"].Value = "Total";

        // Bold headers and apply a blue background with white text
        worksheet["A1:D1"].Style.Font.Bold = true;
        worksheet["A1:D1"].Style.SetBackgroundColor("#4472C4");
        worksheet["A1:D1"].Style.Font.SetColor("#FFFFFF");

        // Add data rows
        worksheet["A2"].Value = "Widget Pro";
        worksheet["B2"].Value = 15000;
        worksheet["C2"].Value = 18500;
        worksheet["D2"].Formula = "=B2+C2";

        worksheet["A3"].Value = "Gadget Plus";
        worksheet["B3"].Value = 22000;
        worksheet["C3"].Value = 24000;
        worksheet["D3"].Formula = "=B3+C3";

        // Apply currency number format to sales columns
        worksheet["B2:D3"].Style.Format = "$#,##0";

        // Stream the XLSX file back to the caller
        var stream = workbook.ToStream();
        return File(
            stream,
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            "SalesReport.xlsx");
    }
}
$vbLabelText   $csharpLabel

엑셀 파일 출력

.NET Core를 위한 Excel API 빌드: XLSX 파일 생성, 읽기 및 내보내기: 이미지 1 - .NET Core API에 의해 생성된 Excel 파일

WorkBook.Create()는 XLSX 및 XLS 형식을 모두 지원합니다. CreateWorkSheet() 메서드는 값을 사용하여 셀을 채우고 계산을 위한 Excel 공식 적용 및 셀 범위를 통한 레이아웃 제어가 가능한 명명된 시트를 추가합니다. IronXL의 계산 엔진은 책자 데이터가 변경될 때 수식을 자동으로 평가하며, 복잡한 데이터 분석 시나리오에서 사용되는 배열 수식도 지원합니다.

셀 스타일은 볼드와 색상 그 이상입니다. 셀 서식 API는 COM 레이어를 건드리지 않고도 숫자 형식, 테두리, 정렬, 글꼴 크기 등을 설정할 수 있게 합니다. 이는 디스플레이 컨텍스트가 없는 컨테이너화된 Linux 환경에서 안전하게 실행할 수 있게 합니다.

워크북에 여러 워크시트를 추가하는 방법은?

단일 워크북은 원하는 만큼의 워크시트를 가질 수 있습니다. 필요한 각 탭에 대해 workbook.CreateWorkSheet("SheetName")를 호출하십시오. 워크시트는 나중에 workbook.GetWorkSheet("SheetName")를 통해 이름으로, 또는 workbook.WorkSheets[0]를 통해 인덱스로 접근할 수 있습니다.

이 패턴은 요약 및 세부 보고서를 생성할 때 유용합니다: 하나의 시트는 집계 결산을 보유하고, 하위 시트는 원시 거래 행을 보유합니다. 워크시트 관리 문서는 런타임 중의 시트 이름 변경, 재정리 및 제거를 살펴봅니다.

웹 API에서 Excel 데이터를 읽는 최고의 방법은?

사용자가 업로드한 Excel 파일에서 데이터를 가져오는 것은 스프레드시트 콘텐츠를 처리하는 모든 웹 애플리케이션에 필수적입니다. IronXL은 Excel 스프레드시트를 읽는 것을 직접 지원합니다 -- 스트림에서 로드하고, 행을 반복하며, 각 셀에서 형식화된 값을 끌어냅니다.

[HttpPost("import")]
public IActionResult ImportExcelData(IFormFile file)
{
    if (file == null || file.Length == 0)
        return BadRequest("No file uploaded");

    using var stream = file.OpenReadStream();

    // Load the workbook directly from the upload stream
    WorkBook workbook = WorkBook.Load(stream);
    WorkSheet worksheet = workbook.DefaultWorkSheet;

    var records = new List<Dictionary<string, object>>();

    // Start at row 2 to skip the header row
    for (int row = 2; row <= worksheet.RowCount; row++)
    {
        var record = new Dictionary<string, object>
        {
            ["Product"] = worksheet[$"A{row}"].StringValue,
            ["Sales"]   = worksheet[$"B{row}"].DecimalValue,
            ["Date"]    = worksheet[$"C{row}"].DateTimeValue
        };
        records.Add(record);
    }

    return Ok(new {
        message     = "Import successful",
        recordCount = records.Count,
        data        = records
    });
}
[HttpPost("import")]
public IActionResult ImportExcelData(IFormFile file)
{
    if (file == null || file.Length == 0)
        return BadRequest("No file uploaded");

    using var stream = file.OpenReadStream();

    // Load the workbook directly from the upload stream
    WorkBook workbook = WorkBook.Load(stream);
    WorkSheet worksheet = workbook.DefaultWorkSheet;

    var records = new List<Dictionary<string, object>>();

    // Start at row 2 to skip the header row
    for (int row = 2; row <= worksheet.RowCount; row++)
    {
        var record = new Dictionary<string, object>
        {
            ["Product"] = worksheet[$"A{row}"].StringValue,
            ["Sales"]   = worksheet[$"B{row}"].DecimalValue,
            ["Date"]    = worksheet[$"C{row}"].DateTimeValue
        };
        records.Add(record);
    }

    return Ok(new {
        message     = "Import successful",
        recordCount = records.Count,
        data        = records
    });
}
$vbLabelText   $csharpLabel

산출

.NET Core를 위한 Excel API 빌드: XLSX 파일 생성, 읽기 및 내보내기: 이미지 2 - 성공적으로 가져온 Excel 데이터를 보여주는 출력

WorkBook.Load()는 스트림, 파일 경로 또는 바이트 배열에서 Excel 파일을 엽니다. 셀은 worksheet["A1"] 인덱서 구문을 통해 또는 명명된 셀 범위를 통해 반복하여 접근할 수 있습니다. IronXL은 데이터 유효성 검사를 자동으로 처리하며 타입 안전 접근자를 제공합니다 - IntValue, DecimalValue, DateTimeValue, StringValue - 따라서 소비 코드가 깔끔하고 예측 가능합니다.

가져온 데이터를 필터링하고 정렬하는 방법은?

워크북을 로드한 후, 행을 정렬하려면 .SortAscending() 또는 .SortDescending()Range 객체에 대해 호출하십시오. 필터링을 위해, 인라인 조건을 평가하거나 LINQ 컬렉션으로 데이터를 전송하여 추가 처리할 수 있습니다. 정렬 및 필터링 가이드는 실용적인 예제를 통해 두 가지 접근 방식을 모두 보여줍니다.

대용량 업로드를 처리하시나요? IronXL은 접근된 셀만 읽으므로 특정 열을 쿼리하기 전에 전체 멀티 메가바이트 파일을 메모리에 로드할 필요가 없습니다. 이 게으른 접근 방식을 사용하면 수만 개의 행이 있는 워크북을 처리할 때 메모리 소비가 안정적으로 유지됩니다.

Excel 데이터를 다른 형식으로 내보내는 방법은?

응용 프로그램은 여러 출력 형식으로 스프레드시트를 제공해야 하는 경우가 많습니다. IronXL은 XML, XLS, CSV, JSON, HTML로의 내보내기를 단일 메소드 호출로 지원하며, 외부 변환 도구가 필요 없습니다.

[HttpGet("export/{format}")]
public IActionResult ExportData(string format)
{
    // Load a pre-designed template workbook
    WorkBook workbook = WorkBook.Load("template.xlsx");

    return format.ToLower() switch
    {
        "xlsx" => File(
            workbook.ToStream(),
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            "export.xlsx"),

        "csv"  => File(
            workbook.ToStream(FileFormat.CSV),
            "text/csv",
            "export.csv"),

        "json" => Ok(workbook.ToJson()),

        _      => BadRequest("Unsupported format")
    };
}
[HttpGet("export/{format}")]
public IActionResult ExportData(string format)
{
    // Load a pre-designed template workbook
    WorkBook workbook = WorkBook.Load("template.xlsx");

    return format.ToLower() switch
    {
        "xlsx" => File(
            workbook.ToStream(),
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            "export.xlsx"),

        "csv"  => File(
            workbook.ToStream(FileFormat.CSV),
            "text/csv",
            "export.csv"),

        "json" => Ok(workbook.ToJson()),

        _      => BadRequest("Unsupported format")
    };
}
$vbLabelText   $csharpLabel

정의된 레이아웃이 포함된 Excel 템플릿을 사용하면 보고서 생성을 가속할 수 있습니다. 사전 설계된 책자를 로드하고, 명명된 셀 또는 범위에 동적 데이터를 채운 다음 결과를 스트림합니다. 이 접근 방식은 일관된 포맷이 유연성보다 더 중요한 영업 보고서, 송장 및 준수 문서에 적합합니다.

IronXL의 크로스 플랫폼 지원은 이러한 파일 작업이 Windows, Linux 및 macOS에서 동일하게 작동함을 의미하며, .NET Core 컨테이너화된 배포에 적합합니다. 자세한 내용은 IronXL 크로스 플랫폼 가이드에서 확인하십시오.

어떻게 .NET Core API에서 CSV로 내보낼 수 있습니까?

workbook.ToStream(FileFormat.CSV)를 호출하고 위에서 보여진 대로 text/csv 콘텐츠 타입으로 반환하십시오. 다중 시트 워크북의 경우, 각 시트는 workbook.WorkSheets[index]에 접근하여 시트 객체에 대해 .ToStream(FileFormat.CSV)를 호출함으로써 독립적으로 내보낼 수 있습니다. CSV 내보내기 문서는 구분 기호, 인코딩 및 날짜 형식 옵션 처리에 대해 다룹니다.

조건부 서식 및 데이터 막대를 어떻게 적용합니까?

기본적인 셀 스타일을 넘어, IronXL은 조건부 서식 규칙을 지원합니다 -- 기준 이상 셀은 녹색으로 강조 표시하고, 음수는 빨간색으로 표시하거나, 트렌드를 스프레드시트에서 즉시 보이도록 점진적 데이터 막대를 적용할 수 있습니다. 외부 도구의 후처리 없이 가능합니다.

조건부 서식은 재무 대시보드 및 KPI 보고서에서 독자가 한눈에 이상값을 식별해야 할 때 특히 유용합니다. 수신자가 다운로드 후 자신의 형식을 적용하는 것에 의존하기보다는, 규칙은 XLSX 파일에 내장되어 이동하며, Microsoft Excel이나 호환 뷰어의 모든 버전에서 파일이 열릴 때 자동으로 평가됩니다.

조건부 서식은 워크시트의 ConditionalFormatting 속성을 통해 설정됩니다. 규칙은 이름이 지정된 셀 범위에 적용되며, 여러 조건 유형을 지원합니다: 셀 값 비교, 수식 기반 규칙, 낮은 값에서 높은 값까지 점진적인 색상 스케일, 그리고 셀 내 막대 차트처럼 기능하는 데이터 막대 오버레이입니다. Open XML 사양은 IronXL이 XLSX 파일에 기록하는 기본 규칙 구조를 정의합니다.

색상 스케일, 아이콘 세트, 데이터 막대 적용에 대한 완전한 참조는 IronXL 문서의 조건부 서식 튜토리얼을 참고하십시오.

Excel 파일 및 워크시트를 어떻게 보호합니까?

민감한 데이터를 포함한 보고서를 배포하기 위해서는 접근 제어 계층이 필요합니다. IronXL은 워크북 수준의 암호 보호와 워크시트 수준의 보호를 모두 지원합니다:

  • 워크북 비밀번호: XLSX 파일을 암호화하기 전에 workbook.Password = "secret"를 설정하십시오. 수신자는 Excel에서 열기 위해 비밀번호를 입력해야 합니다.
  • 워크시트 보호: 셀 편집을 잠그면서도 시트를 볼 수 있도록 허용하려면 worksheet.ProtectSheet("password")를 호출하십시오. 특정 범위는 AllowEditRange API를 사용하여 데이터 입력을 위해 잠금을 해제할 수 있습니다.
  • 읽기 전용 배포: 편집할 수 없어야 하는 문서의 경우, 워크시트 보호를 파일 수준의 암호화와 결합하십시오.

암호로 보호된 XLSX 파일은 기본적으로 AES-128 암호화를 사용하며, 이는 기본 Excel이 적용하는 표준과 동일합니다. 이는 IronXL을 통해 보호된 파일이 Excel의 기본 파일 열기 프롬프트와 완전히 호환됨을 의미하며, 수신자 쪽에서 특별한 뷰어가 필요하지 않습니다.

이러한 보안 기능은 표준 .NET Core 보안 모델을 보완하며, 특히 금융 또는 인사 보고 엔드포인트를 구축할 때 유용합니다. 전체 API 참조는 파일 보호 문서에서 제공합니다.

.NET에서 Excel 수식을 어떻게 사용합니까?

IronXL의 내장 계산 엔진은 런타임에 표준 Excel 공식을 평가하여, 디스크에 저장하고 Excel에서 다시 여는 것 없이 API가 계산된 값을 반환할 수 있도록 합니다. 수식 문자열을 셀의 .Formula 속성에 할당하십시오:

// Sum a column and place the result in a footer row
worksheet[$"B{lastRow}"].Formula = $"=SUM(B2:B{lastRow - 1})";

// Calculate an average across a range
worksheet[$"C{lastRow}"].Formula = $"=AVERAGE(C2:C{lastRow - 1})";

// Retrieve the computed value immediately
decimal total = worksheet[$"B{lastRow}"].DecimalValue;
// Sum a column and place the result in a footer row
worksheet[$"B{lastRow}"].Formula = $"=SUM(B2:B{lastRow - 1})";

// Calculate an average across a range
worksheet[$"C{lastRow}"].Formula = $"=AVERAGE(C2:C{lastRow - 1})";

// Retrieve the computed value immediately
decimal total = worksheet[$"B{lastRow}"].DecimalValue;
$vbLabelText   $csharpLabel

IronXL은 수리, 통계, 텍스트, 날짜, 조회 범주를 포함한 대부분의 표준 Excel 함수들을 지원합니다. 고급 시나리오를 위해 배열 수식 (Ctrl+Shift+Enter 의미론)도 지원됩니다. 수식 평가가 내부 .NET 프로세스 내에서 수행되므로, 외부 계산 서비스로 왕복하는 일이 없습니다 -- 수식이 할당된 후 즉시 결과를 얻을 수 있어, 수천개의 행에 걸친 계산에서도 API 응답 시간이 예측 가능합니다. 수식 지원 참조는 모든 지원 함수 목록을 제공합니다.

다음 단계는 무엇입니까?

IronXL을 사용하여 Excel API를 빌드하면 .NET Core 응용 프로그램이 스프레드시트를 다루는 데 강력한 기능을 갖추게 됩니다. 서식이 있는 데이터와 계산 수식으로 XLSX 파일을 만드는 것부터 사용자 업로드를 가져오기, 다양한 형식으로 데이터를 내보내기까지, IronXL은 크로스 플랫폼, 오피스 사용이 필요 없는 방식으로 프로그래밍적 스프레드시트 조작의 모든 측면을 처리합니다.

이 리소스를 탐색하여 더 알아보세요:

무료 체험판 시작을 통해 IronXL을 라이브 프로젝트에서 테스트하거나, 적절한 배포 계획을 찾기 위해 라이선스 옵션을 검토하세요.

자주 묻는 질문

IronXL 이란 무엇인가요?

IronXL 개발자가 Microsoft Office 또는 COM 상호 운용성 없이 C#에서 Excel 파일을 프로그래밍 방식으로 생성, 읽기 및 내보낼 수 있도록 하는 .NET Excel 라이브러리입니다.

Office 없이 .NET Core 에서 Excel 파일을 만드는 방법은 무엇인가요?

새 통합 문서를 만들려면 WorkBook.Create(ExcelFileFormat.XLSX)를 호출하고, CreateWorkSheet()를 사용하여 시트를 추가하고, worksheet['A1'].Value 구문을 사용하여 셀을 채우고, workbook.ToStream()을 사용하여 결과를 스트리밍합니다.

ASP.NET Core 에서 업로드된 Excel 파일을 어떻게 읽나요?

IFormFile 스트림을 WorkBook.Load(stream)에 전달하고, DefaultWorkSheet에 접근한 다음 worksheet.RowCount를 사용하여 행을 반복합니다. DecimalValue 및 DateTimeValue와 같은 형식화된 접근자를 사용하면 각 셀에서 강력한 형식의 데이터를 추출할 수 있습니다.

IronXL Excel 데이터를 CSV 또는 JSON 형식으로 내보낼 수 있습니까?

예. CSV 형식으로 출력하려면 workbook.ToStream(FileFormat.CSV)를 호출하고, 통합 문서 데이터를 JSON 형식으로 표현하려면 workbook.ToJson()을 호출하세요.

IronXL Linux와 macOS에서 실행되나요?

예. IronXL .NET Standard 2.0 이상을 대상으로 하며 Microsoft Office 설치나 COM 레이어 없이 Windows, Linux 및 macOS에서 실행됩니다.

IronXL 사용하여 Excel 파일에 암호를 설정하여 보호하는 방법은 무엇입니까?

SaveAs()를 호출하기 전에 workbook.Password를 문자열로 설정하십시오. 워크시트 수준의 보호를 위해서는 worksheet.ProtectSheet('password')를 호출하여 셀 편집은 방지하면서 시트 읽기는 허용하십시오.

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

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

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

Iron Support Team

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