푸터 콘텐츠로 바로가기
다른 구성 요소와 비교

IronXL 과 Epplus 비교

이 기사에서는 IronXL과 EPPlus 소프트웨어의 유사점과 차이점을 살펴봅니다.

대부분의 조직에서 Microsoft Excel은 매우 유용한 도구로 입증되었습니다. 데이터베이스와 같은 Excel 파일은 셀에 데이터를 포함하고 있어 저장해야 할 데이터를 쉽게 관리할 수 있습니다.

Excel에서도 .xls.xlsx 파일 형식을 사용합니다. C# 언어로 Excel 파일을 관리하는 것은 어려울 수 있습니다. 그러나 IronXL과 EPPlus 소프트웨어는 이러한 과정을 더 쉽게 처리할 수 있게 해줍니다.

이 소프트웨어를 사용할 때 Microsoft Office는 필요하지 않습니다.

Microsoft Office를 설치하지 않고도 C#에서 Excel 파일을 읽고 만들 수 있다는 점에 유의하세요. 오늘은 구현하기 쉬운 몇 가지 다른 옵션을 살펴보겠습니다.

EPPlus 소프트웨어란 무엇인가요?

EPPlus는 Office Open XML 스프레드시트를 처리하기 위한 NuGet 기반의 .NET Framework/.NET Core 라이브러리입니다. 버전 5는 .NET Framework 3.5 및 .NET Core 2.0을 지원합니다. EPPlus는 Microsoft Excel과 같은 다른 라이브러리에 의존하지 않습니다.

EPPlus에는 Office Excel 문서 작업을 허용하는 API가 있습니다. EPPlus는 Office OpenXML 형식의 Excel 파일을 읽고 쓰는 .NET 라이브러리입니다. 이 라이브러리는 NuGet에서 패키지로 제공됩니다.

이 라이브러리는 프로그래머를 염두에 두고 만들어졌습니다. 목표는 Excel이나 기타 스프레드시트 라이브러리에 익숙한 개발자가 API를 빠르게 배우는 것이었습니다. 또는 'IntelliSense로 승리를 거두십시오!'라는 말로 요약할 수 있습니다.

EPPlus 설치

Visual Studio에서 EPPlus를 설치하려면 보기 > 기타 창 > 패키지 관리자 콘솔로 가서 다음 명령어를 입력하세요:

Install-Package EPPlus

.NET CLI를 이용하고 싶다면, 관리자 권한 명령 프롬프트 또는 PowerShell 프롬프트에서 다음 명령어를 실행하세요:

dotnet add package EPPlus

EPPlus는 프로젝트에 추가할 수 있는 dotnet 패키지입니다.

IronXL이란 무엇인가요?

IronXL은 .NET에서 Excel 스프레드시트 파일을 읽고, 편집하고, 생성할 수 있는 간단한 C# 및 VB Excel API입니다. Microsoft Office나 Excel Interop을 설치할 필요가 없습니다. 이 라이브러리는 Excel 파일 작업에도 사용할 수 있습니다.

IronXL는 .NET Core, .NET Framework, Xamarin, 모바일, Linux, macOS, Azure를 모두 지원합니다.

스프레드시트로부터 데이터 읽기와 쓰기에는 여러 가지 방법이 있습니다.

NuGet 패키지를 사용한 IronXL 추가

IronXL 패키지를 계정에 추가하는 방법은 세 가지가 있어, 가장 적합한 방법을 선택할 수 있습니다.

  • 패키지 관리자 콘솔을 사용하여 IronXL 설치

프로젝트에서 패키지 관리자 콘솔을 열기 위해 다음 명령을 사용하세요:

패키지 관리자 콘솔에 접근하려면, 도구 => NuGet 패키지 관리자 => 패키지 관리자 콘솔로 이동하세요.

Epplus Read Create Excel Alternative 1 related to NuGet 패키지를 사용한 IronXL 추가

이것은 패키지 관리자 콘솔로 이동하게 합니다. 그런 다음 패키지 관리자 터미널에서 다음 명령어를 입력하세요:

Install-Package IronXl.Excel
Epplus Read Create Excel Alternative 2 related to NuGet 패키지를 사용한 IronXL 추가
  • NuGet 패키지 관리자를 사용하여 IronXL 설치

이는 NuGet 패키지 관리자를 설치하는 다른 접근 방식입니다. 이전 방법으로 설치를 완료했다면 이 접근 방식을 사용할 필요가 없습니다.

NuGet 패키지 관리자에 접근하려면 도구 > NuGet 패키지 관리자 => 드롭다운 메뉴에서 솔루션용 NuGet 패키지 관리 선택으로 이동하세요.

이것은 NuGet-솔루션을 시작합니다; "탐색"을 선택하고 IronXL을 찾으세요.

검색창에 Excel을 입력하세요:

Epplus Read Create Excel Alternative 3 related to NuGet 패키지를 사용한 IronXL 추가

"설치" 버튼을 클릭하면 IronXL이 설치됩니다. IronXL을 설치한 후에는 폼으로 이동하여 개발을 시작할 수 있습니다.

IronXL로 Excel 파일 생성

IronXL로 새 Excel 워크북을 만드는 것은 간단합니다! 코드 한 줄이면 됩니다! 네, 이것은 사실입니다:

// Create a new Excel workbook in XLSX format
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Create a new Excel workbook in XLSX format
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
$vbLabelText   $csharpLabel

IronXL은 XLS(이전 Excel 파일 버전)와 XLSX(현재 및 최신 Excel 파일 버전) 형식으로 파일을 만들 수 있습니다.

  • 기본 워크시트 설정

기본 워크시트를 설정하는 것은 더욱 간단합니다:

// Create a worksheet named "2020 Budget" in the workbook
var sheet = workbook.CreateWorkSheet("2020 Budget");
// Create a worksheet named "2020 Budget" in the workbook
var sheet = workbook.CreateWorkSheet("2020 Budget");
$vbLabelText   $csharpLabel

워크시트는 위 코드 스니펫에서 sheet로 표현되며, 셀 값을 설정하고 Excel이 할 수 있는 거의 모든 것을 수행하는 데 사용할 수 있습니다. Excel 문서를 읽기 전용 파일로 코딩하고 삭제 작업을 수행할 수도 있습니다. Excel처럼 워크시트를 연결할 수도 있습니다.

확실하지 않은 경우 워크북과 워크시트의 차이점을 설명하겠습니다.

워크시트는 워크북에 포함됩니다. 이는 원하는 만큼의 워크시트를 워크북에 넣을 수 있다는 의미입니다. 이는 나중에 다른 기사에서 설명하겠습니다. 행과 열은 워크시트를 구성합니다. 행과 열의 교차점은 셀이라고 하며, Excel에서 상호작용하는 것이 바로 이곳입니다.

EPPlus Software AB로 Excel 파일 생성

EPPlus는 피벗 테이블, 피벗 영역 생성, 심지어 조건부 서식 및 폰트 변경과 같은 작업을 수행하여 Excel 파일을 생성하는 데 사용할 수 있습니다. 더 이상 지체하지 않고, 일반 DataTable를 XLSX Excel 파일로 변환하고 다운로드를 위해 사용자에게 전송하는 전체 소스 코드는 다음과 같습니다:

public ActionResult ConvertToXLSX()
{
    byte[] fileData = null;

    // Replace the GetDataTable() method with your DBMS-fetching code.
    using (DataTable dt = GetDataTable())
    {
        // Create an empty spreadsheet
        using (var p = new ExcelPackage())
        {
            // Add a worksheet to the spreadsheet
            ExcelWorksheet ws = p.Workbook.Worksheets.Add(dt.TableName);

            // Initialize rows and columns counter: note that they are 1-based!
            var row = 1;
            var col = 1;

            // Create the column names on the first line.
            // In this sample, we'll just use the DataTable column names
            row = 1;
            col = 0;
            foreach (DataColumn dc in dt.Columns)
            {
                col++;
                ws.SetValue(row, col, dc.ColumnName);
            }

            // Insert the DataTable rows into the XLS file
            foreach (DataRow r in dt.Rows)
            {
                row++;
                col = 0;
                foreach (DataColumn dc in dt.Columns)
                {
                    col++;
                    ws.SetValue(row, col, r[dc].ToString());
                }

                // Alternate light-gray color for uneven rows (3, 5, 7, 9)...
                if (row % 2 != 0)
                {
                    ws.Row(row).Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
                    ws.Row(row).Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.LightGray);
                }
            }

            // Output the XLSX file
            using (var ms = new MemoryStream())
            {
                p.SaveAs(ms);
                ms.Seek(0, SeekOrigin.Begin);
                fileData = ms.ToArray();
            }
        }
    }

    string fileName = "ConvertedFile.xlsx";
    string contentType = System.Web.MimeMapping.GetMimeMapping(fileName);
    Response.AppendHeader("Content-Disposition", String.Format("attachment;filename={0}", fileName));
    return File(fileData, contentType);
}
public ActionResult ConvertToXLSX()
{
    byte[] fileData = null;

    // Replace the GetDataTable() method with your DBMS-fetching code.
    using (DataTable dt = GetDataTable())
    {
        // Create an empty spreadsheet
        using (var p = new ExcelPackage())
        {
            // Add a worksheet to the spreadsheet
            ExcelWorksheet ws = p.Workbook.Worksheets.Add(dt.TableName);

            // Initialize rows and columns counter: note that they are 1-based!
            var row = 1;
            var col = 1;

            // Create the column names on the first line.
            // In this sample, we'll just use the DataTable column names
            row = 1;
            col = 0;
            foreach (DataColumn dc in dt.Columns)
            {
                col++;
                ws.SetValue(row, col, dc.ColumnName);
            }

            // Insert the DataTable rows into the XLS file
            foreach (DataRow r in dt.Rows)
            {
                row++;
                col = 0;
                foreach (DataColumn dc in dt.Columns)
                {
                    col++;
                    ws.SetValue(row, col, r[dc].ToString());
                }

                // Alternate light-gray color for uneven rows (3, 5, 7, 9)...
                if (row % 2 != 0)
                {
                    ws.Row(row).Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
                    ws.Row(row).Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.LightGray);
                }
            }

            // Output the XLSX file
            using (var ms = new MemoryStream())
            {
                p.SaveAs(ms);
                ms.Seek(0, SeekOrigin.Begin);
                fileData = ms.ToArray();
            }
        }
    }

    string fileName = "ConvertedFile.xlsx";
    string contentType = System.Web.MimeMapping.GetMimeMapping(fileName);
    Response.AppendHeader("Content-Disposition", String.Format("attachment;filename={0}", fileName));
    return File(fileData, contentType);
}
$vbLabelText   $csharpLabel

보시다시피, 이는 모든 ASP.NET MVC Controller에서 사용할 수 있는 ActionResult 메서드입니다; ASP.NET MVC를 사용하지 않는 경우 메소드 내용을 복사하여 필요한 곳에 붙여넣기만 하면 됩니다 (예: 고전 ASP.NET, 콘솔 애플리케이션, Windows Forms 등).

이 코드는 설명이 필요 없고, 다양한 처리 과정을 이해하는 데 도움이 되는 주석들이 충분히 포함되어 있습니다. 하지만 먼저, 여기서 하고 있는 작업의 간단한 요약입니다:

  • 사용자 정의 데이터 제공자 메서드를 사용하여 DataTable 객체를 얻습니다.
  • 우리는 XLSX 파일의 주요 컨테이너인 EPPlus의 ExcelPackage 객체를 만듭니다.
  • 데이터를 입력할 워크시트가 될 ExcelPackageExcelWorksheet를 추가합니다.
  • 헤더 행을 만들기 위해 DataTable 열을 반복하여 워크시트의 첫 번째 행에 추가합니다.
  • DataTable 행을 반복하면서 각 행을 워크시트의 행(2행부터 시작)으로 추가하여 각 DataTable 행이 워크시트 행과 일치하도록 합니다.
  • DataTable에서 ExcelPackage로 변환이 완료되면 ExcelPackage 바이너리 데이터를 저장하기 위한 MemoryStream를 빌드하고 이를 바이트 배열로 변환합니다.
  • HTML 응답을 생성하고 XLSX 파일을 Content-Disposition 첨부 파일과 함께 사용자에게 전송하여 브라우저가 파일을 자동으로 다운로드하도록 합니다.

IronXL은 생성 과정이 매우 쉽기 때문에 이 경우 승리합니다 - 코드 한 줄만 필요하고 바로 사용할 수 있으며; 이는 시간 절약과 디버깅에 도움이 되며 EPPlus는 지루하게 살펴봐야 하고 디버깅이 어려운 여러 코드 줄을 제공합니다.

EPPlus Software AB가 Excel 파일을 작성하는 방법

EPPlus는 Excel 파일 작업을 지원합니다. 읽고 쓰는 .net 라이브러리입니다.

  • Excel 파일 읽기

이를 수행하려면 먼저 EPPlus 패키지를 설치해야 합니다: "도구" -> "NuGet 패키지 관리자" -> "이 솔루션용 NuGet 관리" -> "EPPlus 설치" -> "EPPlus 설치" -> "EPPlus 설치" -> "EPPlus 설치" -> "EPPlus 설치" -> Install EP로 이동하세요. "탐색" 탭에서 "EPPlus"를 검색한 후 NuGet 패키지를 설치하세요.

Epplus Read Create Excel Alternative 4 related to EPPlus Software AB가 Excel 파일을 작성하는 방법

패키지를 설치한 후에는 콘솔 애플리케이션 "Program.cs"에서 아래 코드를 사용할 수 있습니다.

using OfficeOpenXml;
using System;
using System.IO;

namespace ReadExcelInCsharp
{
    class Program
    {
        static void Main(string[] args)
        {
            // Provide file path
            FileInfo existingFile = new FileInfo(@"D:\sample_XLSX.xlsx");
            // Use EPPlus
            using (ExcelPackage package = new ExcelPackage(existingFile))
            {
                // Get the first worksheet in the workbook
                ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
                int colCount = worksheet.Dimension.End.Column;  // Get Column Count
                int rowCount = worksheet.Dimension.End.Row;     // Get row count
                for (int row = 1; row <= rowCount; row++)
                {
                    for (int col = 1; col <= colCount; col++)
                    {
                        // Print data, based on row and columns position
                        Console.WriteLine("Row:" + row + " Column:" + col + " Value:" + worksheet.Cells[row, col].Value?.ToString().Trim());
                    }
                }
            }
        }
    }
}
using OfficeOpenXml;
using System;
using System.IO;

namespace ReadExcelInCsharp
{
    class Program
    {
        static void Main(string[] args)
        {
            // Provide file path
            FileInfo existingFile = new FileInfo(@"D:\sample_XLSX.xlsx");
            // Use EPPlus
            using (ExcelPackage package = new ExcelPackage(existingFile))
            {
                // Get the first worksheet in the workbook
                ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
                int colCount = worksheet.Dimension.End.Column;  // Get Column Count
                int rowCount = worksheet.Dimension.End.Row;     // Get row count
                for (int row = 1; row <= rowCount; row++)
                {
                    for (int col = 1; col <= colCount; col++)
                    {
                        // Print data, based on row and columns position
                        Console.WriteLine("Row:" + row + " Column:" + col + " Value:" + worksheet.Cells[row, col].Value?.ToString().Trim());
                    }
                }
            }
        }
    }
}
$vbLabelText   $csharpLabel

다음은 우리가 작업 중인 샘플 엑셀 파일(.xlsx)과 함께 콘솔 애플리케이션 출력의 예입니다. 여기 C#에서 EPPlus를 사용하여 읽기 위한 xlsx 파일이 있습니다.

Epplus Read Create Excel Alternative 5 related to EPPlus Software AB가 Excel 파일을 작성하는 방법

"cells" 속성(ExcelRange)을 사용하여 여러 소스에서 데이터를 로드하는 다음 방법에 접근할 수 있습니다:

  • CSV 텍스트 파일 읽기 및 데이터를 LoadFromTextLoadFromTextAsync을 사용하여 워크시트의 범위에 로드합니다.
  • LoadFromDataReaderAsyncLoadFromDataReader - 데이터 필드를 DataReader에서 범위로 로드합니다.
  • LoadFromDataTable - DataTable에서 데이터를 범위로 로드합니다. XML(예제가 제공됨) 및 데이터베이스를 포함한 다양한 소스에서 데이터를 가져올 수 있습니다.
  • LoadFromCollection - IEnumerable에서 데이터를 반영적으로 범위로 로드합니다.
  • 속성 있는 LoadFromCollection - IEnumerable에서 데이터를 반영적으로 범위 또는 테이블로 로드합니다. 스타일, 숫자 형식, 수식 및 기타 속성은 속성을 통해 지정됩니다.
  • LoadFromDictionaries - ExpandoObject/동적 객체(그들의 IDictionary<string, object> 인터페이스를 통해)로 구성된 IEnumerable에서 데이터를 범위로 로드합니다. 이는 JSON 데이터를 가져오는 데 유용하며 예제가 포함되어 있습니다.
  • LoadFromArrays - 객체 []IEnumerable에서 데이터를 범위로 로드하며, 각 객체 배열이 워크시트의 행에 해당합니다.

이러한 방법을 사용할 때 Excel 테이블을 생성하기 위한 매개변수를 제공할 수 있습니다. 샘플 프로젝트 Sample-.NET Framework 또는 Sample-.NET Framework의 샘플 4 및 5에는 더 광범위한 예제들이 포함되어 있습니다.

  • 엑셀 파일 작성

다음으로, 데이터를 새로운 엑셀 파일로 내보낼 수 있는지 확인해 보겠습니다.

엑셀 문서로 저장하고자 하는 샘플 데이터/개체가 있습니다.

List<UserDetails> persons = new List<UserDetails>()
{
    new UserDetails() {ID="9999", Name="ABCD", City ="City1", Country="USA"},
    new UserDetails() {ID="8888", Name="PQRS", City ="City2", Country="INDIA"},
    new UserDetails() {ID="7777", Name="XYZZ", City ="City3", Country="CHINA"},
    new UserDetails() {ID="6666", Name="LMNO", City ="City4", Country="UK"},
};
List<UserDetails> persons = new List<UserDetails>()
{
    new UserDetails() {ID="9999", Name="ABCD", City ="City1", Country="USA"},
    new UserDetails() {ID="8888", Name="PQRS", City ="City2", Country="INDIA"},
    new UserDetails() {ID="7777", Name="XYZZ", City ="City3", Country="CHINA"},
    new UserDetails() {ID="6666", Name="LMNO", City ="City4", Country="UK"},
};
$vbLabelText   $csharpLabel

필수 정보를 포함한 새 Excel 파일을 만들려면 ExcelPackage 클래스를 사용해야 합니다. 파일에 데이터를 작성하고 새로운 엑셀 스프레드시트를 만드는 것은 몇 줄의 코드로만 가능합니다. Excel 시트에 DataTables를 로드하는 매직을 수행하는 아래의 한 줄을 주목하십시오.

Epplus Read Create Excel Alternative 6 related to EPPlus Software AB가 Excel 파일을 작성하는 방법

단순하게 하기 위해, 같은 프로젝트 폴더에 새로운 스프레드시트 파일을 생성하고 있습니다(엑셀 파일은 프로젝트의 'bin' 폴더에 생성됨). 소스 코드는 아래에 있습니다:

private static void WriteToExcel(string path)
{
    // Let use below test data for writing it to excel
    List<UserDetails> persons = new List<UserDetails>()
    {
        new UserDetails() {ID="9999", Name="ABCD", City ="City1", Country="USA"},
        new UserDetails() {ID="8888", Name="PQRS", City ="City2", Country="INDIA"},
        new UserDetails() {ID="7777", Name="XYZZ", City ="City3", Country="CHINA"},
        new UserDetails() {ID="6666", Name="LMNO", City ="City4", Country="UK"},
    };

    // Let's convert our object data to Datatable for a simplified logic.
    // Datatable is the easiest way to deal with complex datatypes for easy reading and formatting. 
    DataTable table = (DataTable)JsonConvert.DeserializeObject(JsonConvert.SerializeObject(persons), (typeof(DataTable)));
    FileInfo filePath = new FileInfo(path);
    using (var excelPack = new ExcelPackage(filePath))
    {
        var ws = excelPack.Workbook.Worksheets.Add("WriteTest");
        ws.Cells.LoadFromDataTable(table, true, OfficeOpenXml.Table.TableStyles.Light8);
        excelPack.Save();
    }
}
private static void WriteToExcel(string path)
{
    // Let use below test data for writing it to excel
    List<UserDetails> persons = new List<UserDetails>()
    {
        new UserDetails() {ID="9999", Name="ABCD", City ="City1", Country="USA"},
        new UserDetails() {ID="8888", Name="PQRS", City ="City2", Country="INDIA"},
        new UserDetails() {ID="7777", Name="XYZZ", City ="City3", Country="CHINA"},
        new UserDetails() {ID="6666", Name="LMNO", City ="City4", Country="UK"},
    };

    // Let's convert our object data to Datatable for a simplified logic.
    // Datatable is the easiest way to deal with complex datatypes for easy reading and formatting. 
    DataTable table = (DataTable)JsonConvert.DeserializeObject(JsonConvert.SerializeObject(persons), (typeof(DataTable)));
    FileInfo filePath = new FileInfo(path);
    using (var excelPack = new ExcelPackage(filePath))
    {
        var ws = excelPack.Workbook.Worksheets.Add("WriteTest");
        ws.Cells.LoadFromDataTable(table, true, OfficeOpenXml.Table.TableStyles.Light8);
        excelPack.Save();
    }
}
$vbLabelText   $csharpLabel

위에서 언급한 API 호출 후 데이터 유효성 검사로, 새 엑셀 파일이 생성되며, 위의 사용자 정의 객체 변환이 적절한 엑셀 열과 행에 이루어지며 아래 값을 표시합니다.

Epplus Read Create Excel Alternative 7 related to EPPlus Software AB가 Excel 파일을 작성하는 방법

위의 사용 가능한 API는 .NET Core 콘솔, 테스트 프로젝트 또는 ASP.NET Core 애플리케이션에서 사용할 수 있으며, 논리를 요구에 맞게 변경할 수 있습니다.

이 기술은 "cells" 속성(ExcelRange)을 사용하여 접근할 수 있습니다:

  • ToText 및 ToTextAsync — 범위에서 CSV 문자열 생성.
  • SaveToTextSaveToTextAsync과 함께 CSV 파일에 범위 쓰기.
  • ToDataTable 메서드를 사용하여 범위에서 System으로 데이터를 내보냄. DataTable
  • GetValue - 데이터 유형의 옵션을 사용하여 값을 표시합니다.
  • Value — 범위의 값을 반환하거나 설정합니다.

워크시트 객체에서 직접 사용할 수 있는 GetValueSetValue 메서드도 있습니다. (범위에서 읽기/쓰기를 하는 것보다 약간 더 나은 결과를 제공합니다):

  • GetValue - 데이터 유형을 지정할 수 있는 옵션을 사용하여 단일 셀의 값을 가져옵니다.
  • SetValue — 단일 셀의 값을 변경합니다.

셀 속성이 IEnumerable 인터페이스를 구현하므로 Linq를 사용하여 워크시트에서 데이터를 쿼리할 수 있습니다.

IronXL로 Open XML Format XLSX 열고 작성하기

IronXL은 NET 라이브러리로, C# 개발자가 엑셀, 피벗 테이블 및 기타 스프레드시트 파일을 빠르고 쉽게 작업할 수 있도록 합니다.

Office Interop은 필요하지 않습니다. Core 또는 Azure에 Microsoft Office를 설치할 필요가 없으며 특정 종속성이 없습니다.

IronXL은 .NET Core 및 .NET Framework 용으로 잘 알려진 C# 및 VB.NET 엑스엘 스프레드시트 라이브러리입니다.

  • Excel 파일 읽기
  • 로드할 워크시트

Excel 시트는 WorkBook 클래스로 표현됩니다. 피벗 테이블까지 포함된 C#에서 Excel 파일을 열려면 WorkBook을 사용합니다. 엑셀 파일을 로드하고 그 위치를 선택합니다(.xlsx).

/**
 Load WorkBook
 **/
var workbook = WorkBook.Load(@"Spreadsheets\\GDP.xlsx");
/**
 Load WorkBook
 **/
var workbook = WorkBook.Load(@"Spreadsheets\\GDP.xlsx");
$vbLabelText   $csharpLabel

WorkSheet 객체는 여러 WorkBooks에서 찾을 수 있습니다. 이들은 엑셀 문서의 워크시트입니다. 시트에 워크시트가 포함되어 있는 경우, GetWorkSheet을 사용하여 WorkBook 이름으로 찾습니다.

var worksheet = workbook.GetWorkSheet("GDPByCountry");
var worksheet = workbook.GetWorkSheet("GDPByCountry");
$vbLabelText   $csharpLabel
  • 자신만의 워크북 만들기.

새 WorkBook을 메모리에서 생성하려면 시트 유형으로 새 WorkBook를 구성합니다.

/**
 Create WorkBook
 **/
var workbook = new WorkBook(ExcelFileFormat.XLSX);
/**
 Create WorkBook
 **/
var workbook = new WorkBook(ExcelFileFormat.XLSX);
$vbLabelText   $csharpLabel

오래된 Microsoft Excel 스프레드시트의 경우 ExcelFileFormat.XLS(95 및 이전 버전)를 사용하세요.

워크시트가 없으면 워크시트를 만드십시오.

각 'WorkBook'에는 다양한 WorkSheets가 있을 수 있습니다. 'WorkSheet'는 하나의 데이터 시트이고, 'WorkBook'은 여러 WorkSheets의 모음입니다. Excel에서 두 개의 워크시트를 가진 하나의 워크북은 이렇게 보입니다.

Epplus Read Create Excel Alternative 8 related to IronXL로 Open XML Format XLSX 열고 작성하기

WorkBook은 생성할 수 있는 새 WorkSheet의 이름입니다.

var worksheet = workbook.CreateWorkSheet("Countries");
var worksheet = workbook.CreateWorkSheet("Countries");
$vbLabelText   $csharpLabel

워크시트의 이름을 CreateWorkSheet에 전달합니다.

셀 범위 얻기

'Range' 클래스는 'Cell' 객체의 이차원 컬렉션을 나타냅니다. 이는 특정 Excel 셀의 범위를 나타냅니다. WorkSheet 객체의 문자열 인덱서를 사용하여 범위를 얻을 수 있습니다.

var range = worksheet["D2:D101"];
var range = worksheet["D2:D101"];
$vbLabelText   $csharpLabel

인수 텍스트는 셀의 좌표(예: 'A1') 또는 왼쪽에서 오른쪽, 위에서 아래로의 셀 범위(예: 'B2:E5')일 수 있습니다. WorkSheet에서도 GetRange을 호출할 수 있습니다.

  • 범위 내의 셀 값 편집

Range 내의 셀 값은 다양한 방식으로 읽거나 편집할 수 있습니다. 값이 알려져 있으면 For 루프를 사용하십시오. 이곳에서 셀 스타일링도 수행할 수 있습니다.

/**
 Edit Cell Values in Range
 **/
 // Iterate through the rows
for (var y = 2; y <= 101; y++)
{
    var result = new PersonValidationResult { Row = y };
    results.Add(result);

    // Get all cells for the person
    var cells = worksheet[$"A{y}:E{y}"].ToList();

    // Validate the phone number (1 = B)
    var phoneNumber = cells[1].Value;
    result.PhoneNumberErrorMessage = ValidatePhoneNumber(phoneNumberUtil, (string)phoneNumber);

    // Validate the email address (3 = D)
    result.EmailErrorMessage = ValidateEmailAddress((string)cells[3].Value);

    // Get the raw date in the format of Month Day [suffix], Year (4 = E)
    var rawDate = (string) cells[4].Value;
    result.DateErrorMessage = ValidateDate(rawDate);
}
/**
 Edit Cell Values in Range
 **/
 // Iterate through the rows
for (var y = 2; y <= 101; y++)
{
    var result = new PersonValidationResult { Row = y };
    results.Add(result);

    // Get all cells for the person
    var cells = worksheet[$"A{y}:E{y}"].ToList();

    // Validate the phone number (1 = B)
    var phoneNumber = cells[1].Value;
    result.PhoneNumberErrorMessage = ValidatePhoneNumber(phoneNumberUtil, (string)phoneNumber);

    // Validate the email address (3 = D)
    result.EmailErrorMessage = ValidateEmailAddress((string)cells[3].Value);

    // Get the raw date in the format of Month Day [suffix], Year (4 = E)
    var rawDate = (string) cells[4].Value;
    result.DateErrorMessage = ValidateDate(rawDate);
}
$vbLabelText   $csharpLabel

스프레드시트의 데이터 검증

데이터 시트를 검증하려면 IronXL을 사용하십시오. DataValidation 샘플은 libphonenumber-CSharp으로 전화번호를 검증하고, 기존의 C# API로 이메일 주소와 날짜를 검증합니다.

/**
 Validate Spreadsheet Data
 **/
 // Iterate through the rows
for (var i = 2; i <= 101; i++)
{
    var result = new PersonValidationResult { Row = i };
    results.Add(result);

    // Get all cells for the person
    var cells = worksheet[$"A{i}:E{i}"].ToList();

    // Validate the phone number (1 = B)
    var phoneNumber = cells[1].Value;
    result.PhoneNumberErrorMessage = ValidatePhoneNumber(phoneNumberUtil, (string)phoneNumber);

    // Validate the email address (3 = D)
    result.EmailErrorMessage = ValidateEmailAddress((string)cells[3].Value);

    // Get the raw date in the format of Month Day [suffix], Year (4 = E)
    var rawDate = (string)cells[4].Value;
    result.DateErrorMessage = ValidateDate(rawDate);
}
/**
 Validate Spreadsheet Data
 **/
 // Iterate through the rows
for (var i = 2; i <= 101; i++)
{
    var result = new PersonValidationResult { Row = i };
    results.Add(result);

    // Get all cells for the person
    var cells = worksheet[$"A{i}:E{i}"].ToList();

    // Validate the phone number (1 = B)
    var phoneNumber = cells[1].Value;
    result.PhoneNumberErrorMessage = ValidatePhoneNumber(phoneNumberUtil, (string)phoneNumber);

    // Validate the email address (3 = D)
    result.EmailErrorMessage = ValidateEmailAddress((string)cells[3].Value);

    // Get the raw date in the format of Month Day [suffix], Year (4 = E)
    var rawDate = (string)cells[4].Value;
    result.DateErrorMessage = ValidateDate(rawDate);
}
$vbLabelText   $csharpLabel

위의 코드는 스프레드시트의 행을 반복하면서 셀을 리스트로 가져옵니다. 검증된 각 메서드는 셀의 값을 검증하고 값이 틀리면 오류를 반환합니다.

이 코드는 새로운 시트를 생성하고, 헤더를 명시하며, 오류 메시지 결과를 생성하여 잘못된 데이터 로그를 기록할 수 있도록 합니다.

var resultsSheet = workbook.CreateWorkSheet("Results");

resultsSheet["A1"].Value = "Row";
resultsSheet["B1"].Value = "Valid";
resultsSheet["C1"].Value = "Phone Error";
resultsSheet["D1"].Value = "Email Error";
resultsSheet["E1"].Value = "Date Error";

for (var i = 0; i < results.Count; i++)
{
    var result = results[i];
    resultsSheet[$"A{i + 2}"].Value = result.Row;
    resultsSheet[$"B{i + 2}"].Value = result.IsValid ? "Yes" : "No";
    resultsSheet[$"C{i + 2}"].Value = result.PhoneNumberErrorMessage;
    resultsSheet[$"D{i + 2}"].Value = result.EmailErrorMessage;
    resultsSheet[$"E{i + 2}"].Value = result.DateErrorMessage;
}

workbook.SaveAs(@"Spreadsheets\\PeopleValidated.xlsx");
var resultsSheet = workbook.CreateWorkSheet("Results");

resultsSheet["A1"].Value = "Row";
resultsSheet["B1"].Value = "Valid";
resultsSheet["C1"].Value = "Phone Error";
resultsSheet["D1"].Value = "Email Error";
resultsSheet["E1"].Value = "Date Error";

for (var i = 0; i < results.Count; i++)
{
    var result = results[i];
    resultsSheet[$"A{i + 2}"].Value = result.Row;
    resultsSheet[$"B{i + 2}"].Value = result.IsValid ? "Yes" : "No";
    resultsSheet[$"C{i + 2}"].Value = result.PhoneNumberErrorMessage;
    resultsSheet[$"D{i + 2}"].Value = result.EmailErrorMessage;
    resultsSheet[$"E{i + 2}"].Value = result.DateErrorMessage;
}

workbook.SaveAs(@"Spreadsheets\\PeopleValidated.xlsx");
$vbLabelText   $csharpLabel

Entity Framework를 사용한 데이터 내보내기

IronXL을 사용하여 Excel 스프레드시트를 데이터베이스로 변환하거나 데이터를 데이터베이스로 내보내십시오. ExcelToDB 샘플은 국가별 GDP를 포함한 스프레드시트를 읽고 이를 SQLite로 내보냅니다.

Entity Framework를 사용하여 데이터베이스를 생성한 후 데이터를 라인별로 내보냅니다.

SQLite Entity Framework NuGet 패키지를 설치해야 합니다.

Epplus Read Create Excel Alternative 9 related to IronXL로 Open XML Format XLSX 열고 작성하기

Entity Framework를 사용하여 데이터를 데이터베이스로 내보낼 수 있는 모델 객체를 구성할 수 있습니다.

public class Country
{
    [Key]
    public Guid Key { get; set; }
    public string Name { get; set; }
    public decimal GDP { get; set; }
}
public class Country
{
    [Key]
    public Guid Key { get; set; }
    public string Name { get; set; }
    public decimal GDP { get; set; }
}
$vbLabelText   $csharpLabel

다른 데이터베이스를 사용하려면 적절한 NuGet 패키지를 설치하고 UseSqLite의 동등성을 찾으세요(UseMySQL, UseSqlServer 등).

/**
 Export Data using Entity Framework
 **/
public class CountryContext : DbContext
{
    public DbSet<Country> Countries { get; set; }

    public CountryContext()
    {
        // TODO: Make async
        Database.EnsureCreated();
    }

    /// <summary>
    /// Configure context to use Sqlite
    /// </summary>
    /// <param name="optionsBuilder"></param>
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        var connection = new SqliteConnection($"Data Source=Country.db");
        connection.Open();

        var command = connection.CreateCommand();

        // Create the database if it doesn't already exist
        command.CommandText = $"PRAGMA foreign_keys = ON;";
        command.ExecuteNonQuery();

        optionsBuilder.UseSqlite(connection);

        base.OnConfiguring(optionsBuilder);
    }
}
/**
 Export Data using Entity Framework
 **/
public class CountryContext : DbContext
{
    public DbSet<Country> Countries { get; set; }

    public CountryContext()
    {
        // TODO: Make async
        Database.EnsureCreated();
    }

    /// <summary>
    /// Configure context to use Sqlite
    /// </summary>
    /// <param name="optionsBuilder"></param>
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        var connection = new SqliteConnection($"Data Source=Country.db");
        connection.Open();

        var command = connection.CreateCommand();

        // Create the database if it doesn't already exist
        command.CommandText = $"PRAGMA foreign_keys = ON;";
        command.ExecuteNonQuery();

        optionsBuilder.UseSqlite(connection);

        base.OnConfiguring(optionsBuilder);
    }
}
$vbLabelText   $csharpLabel

CountryContext을 생성한 다음 범위를 반복하여 각각의 항목을 생성하고 SaveChangesAsync을 사용하여 데이터를 데이터베이스에 저장합니다.

public async Task ProcessAsync()
{
    // Get the first worksheet
    var workbook = WorkBook.Load(@"Spreadsheets\\GDP.xlsx");
    var worksheet = workbook.GetWorkSheet("GDPByCountry");

    // Create the database connection
    using (var countryContext = new CountryContext())
    {
        // Iterate through all the cells
        for (var i = 2; i <= 213; i++)
        {
            // Get the range from A-B
            var range = worksheet[$"A{i}:B{i}"].ToList();

            // Create a Country entity to be saved to the database
            var country = new Country
            {
                Name = (string)range[0].Value,
                GDP = (decimal)(double)range[1].Value
            };

            // Add the entity
            await countryContext.Countries.AddAsync(country);
        }

        // Commit changes to the database
        await countryContext.SaveChangesAsync();
    }
}
public async Task ProcessAsync()
{
    // Get the first worksheet
    var workbook = WorkBook.Load(@"Spreadsheets\\GDP.xlsx");
    var worksheet = workbook.GetWorkSheet("GDPByCountry");

    // Create the database connection
    using (var countryContext = new CountryContext())
    {
        // Iterate through all the cells
        for (var i = 2; i <= 213; i++)
        {
            // Get the range from A-B
            var range = worksheet[$"A{i}:B{i}"].ToList();

            // Create a Country entity to be saved to the database
            var country = new Country
            {
                Name = (string)range[0].Value,
                GDP = (decimal)(double)range[1].Value
            };

            // Add the entity
            await countryContext.Countries.AddAsync(country);
        }

        // Commit changes to the database
        await countryContext.SaveChangesAsync();
    }
}
$vbLabelText   $csharpLabel

스프레드시트에 수식 추가

셀의 수식을 설정하는 데 사용할 수 있는 Formula 속성이 있습니다.

// Iterate through all rows with a value
for (var y = 2; y < i; y++)
{
    // Get the C cell
    var cell = sheet[$"C{y}"].First();

    // Set the formula for the Percentage of Total column
    cell.Formula = $"=B{y}/B{i}";
}
// Iterate through all rows with a value
for (var y = 2; y < i; y++)
{
    // Get the C cell
    var cell = sheet[$"C{y}"].First();

    // Set the formula for the Percentage of Total column
    cell.Formula = $"=B{y}/B{i}";
}
$vbLabelText   $csharpLabel

열 C의 코드는 각 주를 반복하고 백분율 총합을 계산합니다.

API 데이터를 스프레드시트로 다운로드할 수 있습니다

아래 호출에서는 RestClient.Net을 사용하여 REST 호출을 수행합니다. JSON을 다운로드하여 RestCountry 유형의 'List'로 변환합니다. 각 국가를 순회하여 REST API의 데이터를 Excel 파일에 쉽게 저장할 수 있습니다.

/**
 Data API to Spreadsheet
 **/
var client = new Client(new Uri("https://restcountries.eu/rest/v2/"));
List<RestCountry> countries = await client.GetAsync<List<RestCountry>>();
/**
 Data API to Spreadsheet
 **/
var client = new Client(new Uri("https://restcountries.eu/rest/v2/"));
List<RestCountry> countries = await client.GetAsync<List<RestCountry>>();
$vbLabelText   $csharpLabel

API의 JSON 데이터는 다음과 같습니다:

Epplus Read Create Excel Alternative 10 related to IronXL로 Open XML Format XLSX 열고 작성하기

다음 코드는 각 국가를 순회하면서 이름, 인구, 지역, NumericCode 및 상위 3개의 언어로 스프레드시트를 채웁니다.

for (var i = 2; i < countries.Count; i++)
{
    var country = countries[i];

    // Set the basic values
    worksheet[$"A{i}"].Value = country.name;
    worksheet[$"B{i}"].Value = country.population;
    worksheet[$"G{i}"].Value = country.region;
    worksheet[$"H{i}"].Value = country.numericCode;

    // Iterate through languages
    for (var x = 0; x < 3; x++)
    {
        if (x > (country.languages.Count - 1)) break;

        var language = country.languages[x];

        // Get the letter for the column
        var columnLetter = GetColumnLetter(4 + x);

        // Set the language name
        worksheet[$"{columnLetter}{i}"].Value = language.name;
    }
}
for (var i = 2; i < countries.Count; i++)
{
    var country = countries[i];

    // Set the basic values
    worksheet[$"A{i}"].Value = country.name;
    worksheet[$"B{i}"].Value = country.population;
    worksheet[$"G{i}"].Value = country.region;
    worksheet[$"H{i}"].Value = country.numericCode;

    // Iterate through languages
    for (var x = 0; x < 3; x++)
    {
        if (x > (country.languages.Count - 1)) break;

        var language = country.languages[x];

        // Get the letter for the column
        var columnLetter = GetColumnLetter(4 + x);

        // Set the language name
        worksheet[$"{columnLetter}{i}"].Value = language.name;
    }
}
$vbLabelText   $csharpLabel

IronXL을 사용하여 Excel 파일 열기

Excel 파일을 실행한 후 첫 번째 시트의 첫 번째 셀을 읽고 출력하는 초기 몇 줄을 추가하십시오.

static void Main(string[] args)
{
    var workbook = IronXl.WorkBook.Load($@"{Directory.GetCurrentDirectory()}\Files\HelloWorld.xlsx");
    var sheet = workbook.WorkSheets.First();
    var cell = sheet["A1"].StringValue;
    Console.WriteLine(cell);
}
static void Main(string[] args)
{
    var workbook = IronXl.WorkBook.Load($@"{Directory.GetCurrentDirectory()}\Files\HelloWorld.xlsx");
    var sheet = workbook.WorkSheets.First();
    var cell = sheet["A1"].StringValue;
    Console.WriteLine(cell);
}
$vbLabelText   $csharpLabel

IronXL을 사용하여 새로운 Excel 파일을 생성하십시오.

/**
 Create Excel File
 **/
static void Main(string[] args)
{
    var newXLFile = WorkBook.Create(ExcelFileFormat.XLSX);
    newXLFile.Metadata.Title = "IronXL New File";
    var newWorkSheet = newXLFile.CreateWorkSheet("1stWorkSheet");
    newWorkSheet["A1"].Value = "Hello World";
    newWorkSheet["A2"].Style.BottomBorder.SetColor("#ff6600");
    newWorkSheet["A2"].Style.BottomBorder.Type = IronXl.Styles.BorderType.Dashed;
}
/**
 Create Excel File
 **/
static void Main(string[] args)
{
    var newXLFile = WorkBook.Create(ExcelFileFormat.XLSX);
    newXLFile.Metadata.Title = "IronXL New File";
    var newWorkSheet = newXLFile.CreateWorkSheet("1stWorkSheet");
    newWorkSheet["A1"].Value = "Hello World";
    newWorkSheet["A2"].Style.BottomBorder.SetColor("#ff6600");
    newWorkSheet["A2"].Style.BottomBorder.Type = IronXl.Styles.BorderType.Dashed;
}
$vbLabelText   $csharpLabel

이후, 각각의 코드로 CSV, JSON, 또는 XML로 저장할 수 있습니다.

예를 들어, XML .xml로 저장

XML로 저장하려면 다음과 같이 SaveAsXml을 사용합니다:

newXLFile.SaveAsXml($@"{Directory.GetCurrentDirectory()}\Files\HelloWorldXML.XML");
newXLFile.SaveAsXml($@"{Directory.GetCurrentDirectory()}\Files\HelloWorldXML.XML");
$vbLabelText   $csharpLabel

결과는 다음과 같습니다:

<?xml version="1.0" standalone="yes"?>
<_x0031_stWorkSheet>
  <_x0031_stWorkSheet>
    <Column1 xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Hello World</Column1>
  </_x0031_stWorkSheet>
  <_x0031_stWorkSheet>
    <Column1 xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
  </_x0031_stWorkSheet>
</_x0031_stWorkSheet>
<?xml version="1.0" standalone="yes"?>
<_x0031_stWorkSheet>
  <_x0031_stWorkSheet>
    <Column1 xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Hello World</Column1>
  </_x0031_stWorkSheet>
  <_x0031_stWorkSheet>
    <Column1 xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
  </_x0031_stWorkSheet>
</_x0031_stWorkSheet>
XML

Excel 파일을 읽는 것은 IronXL을 사용하는 것이 EPPlus보다 더 쉽습니다. IronXL에는 모든 열, 행, 셀을 액세스하는 데 필요한 것을 모두 포함하는 더 짧은 코드가 있습니다. EPPlus의 경우 열과 행을 읽을 특정 코드 라인이 필요합니다.

IronXL은 Excel 문서를 조작하는 데있어 더 지능적입니다. 언제든지 더 많은 시트를 생성할 수 있는 우위를 제공합니다. 여러 워크시트 및 워크북에서 데이터를 읽을 수 있으며, EPPlus는 한 번에 하나의 워크시트를 처리합니다. IronXL을 사용하면 Excel 워크북의 데이터를 사용하여 데이터베이스를 채울 수도 있습니다.

EPPlus 및 IronXL 라이선스 및 가격

EPPlus 라이선스 모델 및 가격

EPPlus는 비상업적 라이선스 모델 또는 Polyform의 상업적 라이선스 모델 중 하나로 사용할 수 있습니다.

상업적 라이선스

이는 영구 및 구독 기반 형식에서 제공되며 약관은 한 달에서 2년까지 다양합니다.

모든 라이선스 카테고리에는 지원 센터를 통한 지원과 NuGet을 통한 업그레이드가 포함되어 있습니다.

EPPlus는 개발자 당 하나의 라이선스가 필요합니다. 라이선스는 한 명의 개인에게 발행되며 공유할 수 없습니다. 일반적인 지침으로, EPPlus를 직접 활용하여 코드를 생산하거나 디버그해야 하는 사람은 상업적 라이선스를 소지해야 합니다.

내부적으로 EPPlus를 서비스로 제공하는 경우(예: API를 통해 기능을 노출), 해당 서비스를 사용할 내부 사용자(개발자) 수를 커버하는 구독을 회사가 구매해야 합니다.

구독

구독으로 항상 최신 버전을 사용할 수 있지만, 개발을 위해 EPPlus를 사용하는 동안에는 유효한 라이선스를 보유해야 합니다. 라이선스 기간이 끝나면 라이선스는 자동으로 청구되고 결제가 완료되면 갱신됩니다. 라이선스 기간이 끝날 때 구독을 취소할 수 있으며 언제든지 새로 시작할 수 있습니다. 구독은 인터넷에서만 구매할 수 있습니다.

EPPlus는 상업적 환경에서 사용할 수 있습니다. 라이선스는 회사당 개발자 한 명에게 부여되며 배포 위치는 무제한입니다. 매년 구매 가능한 라이선스 수를 늘리거나 줄일 수 있으며, 라이선스는 매년 말에 일시 중지되거나 취소될 수 있습니다.

32일 체험 기간이 옵션으로 제공됩니다.

가격: $299부터 시작합니다.

사용한 만큼 결제

단일 조직 내 개발자 당 가격이며, 배포 위치는 무제한이고 Stripe 청구가 포함됩니다. 매달 구매 가능한 라이선스 수를 늘리거나 줄일 수 있으며, 라이선스는 매월 말에 일시 중지되거나 취소될 수 있습니다.

가격: $29부터 시작합니다.

영구 라이선스

영구 라이선스는 새 버전으로 업데이트하고 정해진 기간 동안 지원을 받을 수 있습니다. 이 기간 동안 릴리스된 버전을 사용하여 소프트웨어를 계속 개발할 수 있으며 라이선스를 갱신할 필요는 없습니다.

동일한 회사 내에서 배포 사이트는 무제한이며 개발자 당 가격입니다. 지원/업그레이드 기간 동안 릴리스된 모든 EPPlus 버전의 무기한 사용 가능.

32일 체험 기간이 옵션으로 제공됩니다.

가격: $599부터 시작합니다.

패키지

업그레이드 및 지원 초기 기간과 함께 제공되는 영구 라이선스 옵션이 있습니다. 이 기간 동안 릴리스된 버전을 사용하여 소프트웨어를 계속 개발할 수 있으며 라이선스를 갱신할 필요는 없습니다.

가격: $4,295부터 시작합니다.

Polyform 비상업적 라이선스

EPPlus는 버전 5부터 Polyform 비상업적 라이선스에 따라 라이선스되며, 이는 코드가 오픈 소스이며 비상업적 용도로 사용할 수 있다는 것을 의미합니다. 자세한 내용은 웹사이트에서 확인할 수 있습니다.

IronXL 라이선스 모델 및 가격

영구 라이선스: 각 라이선스는 한 번 구매되고 갱신이 필요하지 않습니다.

무료 지원 및 제품 업데이트: 모든 라이선스에는 제품의 연간 무료 업데이트 및 지원이 포함됩니다. 확장 기능은 언제든지 구매할 수 있습니다. 확장 기능은 확인할 수 있습니다.

즉시 라이선스: 등록된 라이선스 키는 결제가 완료되는 즉시 발송됩니다.

IronXL for .NET 라이선싱에 대한 질문이 있는 경우 Iron Software 라이선싱 전문가에게 문의하십시오.

모든 라이선스는 영구적이며 개발, 스테이징, 프로덕션에 적용됩니다.

Lite - 조직 내의 단일 소프트웨어 개발자가 Iron Software를 단일 장소에서 사용할 수 있도록 허용합니다. Iron Software는 단일 웹 애플리케이션, 인트라넷 애플리케이션 또는 데스크톱 소프트웨어 프로그램에서 사용할 수 있습니다. 라이선스는 양도할 수 없으며, 조직 외부나 에이전시/클라이언트 관계 외에서는 공유할 수 없습니다. 이 라이선스 유형은 OEM 재배포 및 추가 커버리지를 구매하지 않고 SaaS로 Iron Software를 사용하는 것을 제외하고, 계약에 명시적으로 부여되지 않은 모든 권리를 명시적으로 제외합니다.

가격: $489부터 시작합니다.

Professional License - 조직 내의 정해진 수의 소프트웨어 개발자가 최대 10명의 범위 내에서 Iron Software를 단일 장소에서 사용할 수 있도록 허용합니다. Iron Software는 원하는 만큼의 웹사이트, 인트라넷 애플리케이션 또는 데스크톱 소프트웨어 애플리케이션에서 사용할 수 있습니다. 라이선스는 양도할 수 없으며 조직 외부 또는 에이전시/클라이언트 관계 외부에서 공유할 수 없습니다. 이 라이선스 유형은 모든 다른 라이선스 유형과 같이 OEM 재배포와 추가 범위가 구매되지 않는 이상 Iron Software를 SaaS로 사용하는 것을 포함하지 않는 명시되지 않은 모든 권리를 명시적으로 제외합니다.

가격: $976부터 시작합니다.

Unlimited License - 조직 내 무제한 수의 소프트웨어 개발자가 Iron Software를 무제한 장소에서 사용할 수 있도록 허용합니다. Iron Software는 원하는 만큼의 웹사이트, 인트라넷 애플리케이션 또는 데스크톱 소프트웨어 애플리케이션에서 사용할 수 있습니다. 라이선스는 양도할 수 없으며 조직 외부 또는 에이전시/클라이언트 관계 외부에서 공유할 수 없습니다. 이 라이선스 유형은 모든 다른 라이선스 유형과 같이 OEM 재배포와 추가 범위가 구매되지 않는 이상 Iron Software를 SaaS로 사용하는 것을 포함하지 않는 명시되지 않은 모든 권리를 명시적으로 제외합니다.

저작권 무료 재배포 - 기본 라이선스로 보장된 프로젝트 수를 기준으로 Iron Software를 다양한 패키지 상용 제품으로 배포할 수 있습니다. 기본 라이선스로 보장된 프로젝트 수를 기반으로 SaaS 소프트웨어 서비스 내에서 Iron Software를 배포할 수 있습니다.

가격: $2939부터 시작합니다.

결론

결론적으로, IronXL은 짧은 코드 라인과 XML, HTML, JSON을 비롯한 다양한 내보내기 기회를 제공하여 Excel 테이블을 필요에 따라 탐색할 수 있는 유연성을 제공하기 때문에 EPPlus보다 더 실용적입니다. IronXL은 또한 워크북 데이터를 데이터베이스에 통합할 수 있습니다. 또한, 문서가 편집될 때마다 수식을 재계산하는 직관적인 시스템을 갖추고 있으며, WorkSheet["A1:B10"] 구문을 사용하여 직관적인 범위 설정을 제공합니다. 시트 기능에는 Excel과 작동하는 수식이 포함되어 있으며 시트를 편집할 때마다 재계산됩니다. 셀 데이터 형식에는 여러 텍스트, 숫자, 수식, 날짜, 통화, 백분율, 과학적 표기법 및 시간이 포함됩니다. 사용자 지정 형식에서는 범위, 열 및 행과 같은 다른 정렬 방법을 제공합니다. 셀 스타일링에는 다양한 글꼴, 크기, 배경 패턴, 테두리 및 정렬이 포함됩니다.

참고해 주세요EPPlus는 해당 소유자의 등록 상표입니다. 본 사이트는 EPPlus와 관련이 없으며, EPPlus의 인증을 받지 않았고, 후원받지 않았습니다. 모든 제품명, 로고 및 브랜드는 해당 소유자의 자산입니다. 비교는 정보 제공 목적으로만 사용되며, 작성 시점에 공개적으로 이용 가능한 정보를 반영합니다.

자주 묻는 질문

마이크로소프트 오피스를 사용하지 않고 엑셀 파일을 만드는 방법은 무엇인가요?

IronXL 사용하면 Microsoft Office 없이도 Excel 파일을 만들 수 있습니다. IronXL C# 및 VB .NET 에서 Excel 스프레드시트를 읽고 편집하고 생성하기 위한 간단한 API를 제공합니다.

IronXL EPPlus 대신 사용하는 것의 장점은 무엇입니까?

IronXL EPPlus에 비해 더욱 직관적인 API를 제공하고, XML, HTML, JSON 등 다양한 파일 형식을 지원하며, 고급 스타일링 및 수식 재계산 기능을 제공합니다. 따라서 개발자에게 더욱 실용적이고 유연한 사용 환경을 제공합니다.

IronXL 사용하여 Excel 데이터를 조작하고 다른 형식으로 내보낼 수 있습니까?

네, IronXL Excel 데이터를 XML, HTML, JSON 등 다양한 형식으로 내보낼 수 있도록 지원하여 데이터베이스 및 기타 애플리케이션과의 손쉬운 통합을 가능하게 합니다.

IronXL 에서 Excel 수식을 어떻게 처리하나요?

IronXL 직관적인 수식 재계산을 지원하므로 문서가 편집될 때마다 수식이 자동으로 업데이트되어 Excel 수식을 효율적으로 관리할 수 있습니다.

IronXL 어떤 라이선스 옵션을 제공하나요?

IronXL 개발, 스테이징 및 프로덕션 환경에 대한 영구 라이선스를 제공하며, 가격은 개발자 1인 기준 연간 489달러부터 시작합니다. 1년간 무료 업데이트 및 지원이 포함됩니다.

EPPlus를 사용하여 피벗 테이블을 만들고 조건부 서식을 적용할 수 있습니까?

네, EPPlus는 피벗 테이블 생성 및 조건부 서식 적용을 지원하지만, 일반적으로 IronXL 보다 더 복잡한 코드가 필요합니다.

IronXL 어떻게 크로스 플랫폼 개발을 지원하나요?

IronXL .NET Core, .NET Framework, Xamarin, 모바일, Linux, macOS 및 Azure를 포함한 다양한 플랫폼을 지원하므로 크로스 플랫폼 개발에 다용도로 활용할 수 있습니다.

IronXL 사용하려면 서버 또는 클라이언트 컴퓨터에 Microsoft Office가 설치되어 있어야 합니까?

아니요, IronXL Microsoft Office가 설치되어 있지 않아도 작동합니다. Office와 독립적으로 작동하도록 설계되었으며 Excel 파일을 읽고 편집하고 생성하는 기능을 제공합니다.

EPPlus를 사용하여 Excel 파일을 처리하는 주요 기능은 무엇입니까?

EPPlus는 Office OpenXML 지원, Excel에 익숙한 개발자를 위한 사용 편의성, 피벗 테이블 생성 및 조건부 서식 적용과 같은 기능으로 잘 알려져 있습니다. 이중 라이선스 모델로 제공됩니다.

.NET 프로젝트에 IronXL 설치하려면 어떻게 해야 하나요?

IronXL NuGet 패키지 관리자 콘솔에서 Install-Package IronXl.Excel 명령을 사용하거나 .NET CLI에서 dotnet add package IronXl.Excel 명령을 사용하여 설치할 수 있습니다.

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

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

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

Iron Support Team

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