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

IronXL 과 CsvWriter 비교

CSV 파일 작업은 도전적인 과제가 될 수 있습니다. 하지만 오늘날에는 많은 라이브러리가 개발자들이 이 작업을 돕기 위해 제공되고 있으며 Microsoft Excel을 설치할 필요가 없습니다.

이 기사에서는 C# .NET 기술에서 Microsoft Excel 문서를 프로그래밍 방식으로 CSV 형식 또는 표준 Excel 형식으로 작업하는 방법을 설명하고 비교하며, IronXL과 CSVWriter라는 두 가지 인기 있는 라이브러리를 사용합니다.

우선 두 라이브러리가 제공하는 것을 살펴보겠습니다.

IronXL 라이브러리

IronXL은 C#로 Microsoft Excel 문서를 읽고 편집할 수 있는 .NET 라이브러리입니다. IronXl.Excel은 다양한 스프레드시트 형식을 읽기 위한 독립형 .NET 소프트웨어 라이브러리입니다. Microsoft Excel을 설치할 필요가 없으며, Interop에 의존하지도 않습니다.

IronXL은 .NET에서 Excel 스프레드시트 파일을 읽고, 편집하고, 생성할 수 있는 직관적인 C# API로 매우 빠른 성능을 제공합니다. IronXL은 .NET Core, .NET Framework, Xamarin, Mobile, Linux, macOS, Azure를 완벽하게 지원합니다.

IronXL은 C# for .NET Core 및 .net 프레임워크 Excel 스프레드시트 라이브러리의 선두주자입니다.

IronXL 기능 세트

  • XLS/XLSX/CSV/TSV에서 데이터 로드, 읽기 및 편집
  • XLS/XLSX/CSV/TSV/JSON으로 저장 및 내보내기
  • 범위 — 사용하기 쉬운 WorkSheet ["A1:B10"] 구문. 범위를 직관적으로 결합하고 생성.
  • 정렬 — 범위, 열 및 행 정렬.
  • 스타일링 — 셀 시각적 스타일, 폰트, 크기, 배경 패턴, 테두리, 정렬 및 숫자 형식.

CSVWriter

.NET에서 CSV 파일을 작성하기 위한 라이브러리입니다. 매우 빠르고 유연하며 사용하기 쉽습니다. 사용자 정의 클래스 객체 작성 지원.

CsvWriter 기능

  • 빠름: 매우 빠른 성능을 위해 클래스가 즉석에서 컴파일됩니다
  • 유연함: 쓸 때는 보수적이고, 읽을 때는 자유롭습니다
  • 사용이 간편함: 읽기와 쓰기가 GetRecords<t>()WriteRecords(records)만큼 간단합니다
  • 고도로 구성 가능
  • 리눅스 모드
  • 낮은 메모리 사용량

1. 콘솔 애플리케이션 만들기

콘솔 애플리케이션을 만들기 위해 다음 단계를 사용하세요:

  • Visual Studio 2022 IDE 시작합니다.
  • '새 프로젝트 만들기'를 클릭합니다. "새 프로젝트 만들기" 페이지에서 언어 드롭다운 목록에서 C#을 선택하고, 플랫폼 목록에서 Windows를 선택하고, "프로젝트 유형" 목록에서 콘솔을 선택합니다. 표시된 프로젝트 템플릿들 중에서 콘솔 앱 (.NET Framework)를 선택합니다.
Csvhelper Alternatives 1 related to 1. 콘솔 애플리케이션 만들기

*프로젝트 만들기 - 콘솔 응용프로그램*

다음을 클릭합니다. 추가 정보 화면에서 사용하려는 프레임워크 버전을 지정합니다. 이 예제에서는 .NET Framework 4.8을 사용합니다.

Csvhelper Alternatives 2 related to 1. 콘솔 애플리케이션 만들기

*프로젝트 만들기 - .NET Framework*

생성을 클릭하여 프로세스를 완료합니다.

프로젝트가 이제 생성되었으며, 라이브러리 테스트를 거의 완료할 준비가 되었습니다. 그러나, 여전히 프로젝트에 설치하고 통합해야 합니다. 먼저 IronXL을 설치합시다.

2. IronXL C# 라이브러리 설치

다음 방법을 사용하여 IronXL 라이브러리를 다운로드하고 설치할 수 있습니다:

  1. NuGet 패키지로 Visual Studio 사용하기
  2. NuGet 패키지를 직접 다운로드하기
  3. DLL로 수동 설치하기

각 항목에 대해 자세히 살펴봅시다.

2.1. NuGet 패키지를 사용하여 Visual Studio로 설치

Visual Studio는 프로젝트에 NuGet 패키지를 설치하기 위해 NuGet 패키지 관리자를 제공합니다. 프로젝트 메뉴에서 액세스하거나 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하여 액세스할 수 있습니다.

Csvhelper Alternatives 3 related to 2.1. NuGet 패키지를 사용하여 Visual Studio로 설치

*NuGet 패키지 관리 선택*

  • 이제, 탐색 탭에서 -> IronXl.Excel 검색 -> 설치
Csvhelper Alternatives 4 related to 2.1. NuGet 패키지를 사용하여 Visual Studio로 설치

*IronXL 검색*

  • 그리고 우리는 끝났습니다.

2.2. NuGet 패키지를 직접 다운로드

NuGet 사이트에 직접 방문하여 패키지를 다운로드함으로써 이를 수행할 수 있습니다. 단계는 다음과 같습니다:

  • Navigate tohttps://www.nuget.org/packages/IronXl.Excel
  • '패키지 다운로드'를 선택하세요
  • 다운로드된 패키지를 더블 클릭하세요
  • 패키지가 설치됩니다
  • Visual Studio 프로젝트를 다시 로드하고 사용을 시작합니다

2.3. DLL로 수동 설치

IronXL C# 라이브러리를 다운로드 및 설치하는 또 다른 방법은 다음 단계를 사용하여 IronXLNuGet 패키지를 개발자 명령 프롬프트를 통해 설치하는 것입니다.

개발자 명령 프롬프트를 엽니다 — 일반적으로 Visual Studio 폴더에 있습니다. 다음 명령어를 입력합니다:

Install-Package IronXl.Excel
  • Enter 키를 누릅니다
  • 이것은 패키지를 다운로드하고 설치할 것입니다
  • Visual Studio 프로젝트를 다시 로드하고 사용을 시작합니다

2.4. 필요한 Using 지시문 추가

  1. 솔루션 탐색기에서 Program.cs 파일을 마우스 오른쪽 버튼으로 클릭한 다음 코드 보기(View Code)를 클릭합니다.
  2. 코드 파일 상단에 다음 using 지시문를 추가합니다:
using IronXL;
using IronXL;
$vbLabelText   $csharpLabel

모두 완료되었습니다! IronXL이 다운로드, 설치되었으며 사용할 준비가 되었습니다. 하지만 그 전에, CsvHelper를 설치해야 합니다.

3. CSVWriter 설치

3.1. NuGet 패키지 관리자 콘솔 사용하기

CSVWriter와 작업하려면 CsvHelper C# 라이브러리를 다운로드하고 설치해야 합니다. 이 작업을 수행하기 위해서는 개발자 명령 프롬프트를 통해 NuGet 패키지를 설치하는 다음 단계를 사용합니다.

개발자 명령 프롬프트를 엽니다 — 일반적으로 Visual Studio 폴더에 있습니다. 다음 명령어를 입력합니다:

Install-Package CsvHelper -Version 27.2.1
  • Enter 키를 누릅니다
  • 이것은 패키지를 다운로드하고 설치할 것입니다
  • Visual Studio 프로젝트를 다시 로드하고 사용을 시작합니다 CsvHelper.CsvWriter 메서드 세부사항을 구현을 위해 확인하십시오

3.2. 직접 다운로드

Download from the NuGet website: https://www.nuget.org/packages/CsvHelper/

4. IronXL을 사용하여 CSV 파일 작업하기

쉼표로 구분된 값(CSV) 파일은 값을 구분하는 데 쉼표를 사용하는 구분된 텍스트 파일입니다. 파일의 각 줄은 데이터 기록입니다. 이 파일들을 계산을 위해 조작하는 것은 도전적인 작업일 수 있지만, IronXL은 이를 달성하기 위한 꽤 좋고 쉬운 옵션을 제공하며 Microsoft Excel을 사용하지 않아도 됩니다. 먼저 CSV 파일을 일반 Excel 파일로 변환해 봅시다.

4.1. CSV 파일을 Excel 형식으로 변환하기

과정은 매우 간단하고 쉬운 편입니다. 일반적으로 한 줄의 코드로 수행됩니다.

CSV에서 Excel 형식으로:

// Load the CSV file and specify the format and delimiter
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
// Get the default worksheet
WorkSheet ws = workbook.DefaultWorkSheet;

// Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx");
// Load the CSV file and specify the format and delimiter
WorkBook workbook = WorkBook.LoadCSV("test.csv", fileFormat: ExcelFileFormat.XLSX, ListDelimiter: ",");
// Get the default worksheet
WorkSheet ws = workbook.DefaultWorkSheet;

// Save the workbook as an Excel file
workbook.SaveAs("CsvToExcelConversion.xlsx");
$vbLabelText   $csharpLabel

4.2. IronXL을 사용하여 변환된 CSV 파일 읽고 조작하기

IronXLWorkBook 클래스는 Excel 시트를 나타냅니다. C#을 사용하여 Excel 파일을 열려면 WorkBook.Load를 사용하고 Excel 파일 (.xlsx)의 경로를 지정합니다. 다음 한 줄의 코드는 파일을 읽기 위해 여는 데 사용됩니다:

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

각 WorkBook은 여러 WorkSheet 객체를 포함할 수 있습니다. 이들은 Excel 문서의 워크시트를 나타냅니다. 작업책에 워크시트가 포함되어 있는 경우, 다음과 같이 이름으로 검색하여 가져옵니다:

// Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
// Open Sheet for reading
var worksheet = workbook.GetWorkSheet("sheetnamegoeshere");
$vbLabelText   $csharpLabel

셀 값을 읽는 코드:

// Read from Ranges of cells elegantly.
foreach (var cell in worksheet["A2:A10"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// Read from Ranges of cells elegantly.
foreach (var cell in worksheet["A2:A10"])
{
    Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
$vbLabelText   $csharpLabel

워크북 및 워크시트를 로드하고 읽은 후, 다음 코드 샘플을 사용하여 공식을 변경하거나 특정 셀에 공식을 적용할 수 있습니다. 코드는 다음과 같습니다.

// Set Formulas
worksheet["A1"].Formula = "Sum(B8:C12)";
worksheet["B8"].Formula = "=C9/C11";
worksheet["G30"].Formula = "Max(C3:C7)";

// Force recalculate all formula values in all sheets.  
workbook.EvaluateAll();
// Set Formulas
worksheet["A1"].Formula = "Sum(B8:C12)";
worksheet["B8"].Formula = "=C9/C11";
worksheet["G30"].Formula = "Max(C3:C7)";

// Force recalculate all formula values in all sheets.  
workbook.EvaluateAll();
$vbLabelText   $csharpLabel

4.3. Excel 문서를 다시 CSV 파일로 저장하기

IronXL을 사용하면 CSV 파일 쓰기가 쉬운 과정입니다. 다음 코드는 SaveAsCsv 메서드를 사용하여 Excel 파일을 CSV 형식으로 단순히 저장합니다.

// Load the workbook
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
// Save as .csv file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
// Saved as : SaveAsCSV.Sheet1.csv
// Load the workbook
WorkBook wb = WorkBook.Load("Normal_Excel_File.xlsx");
// Save as .csv file
wb.SaveAsCsv("SaveAsCSV.csv", ",");
// Saved as : SaveAsCSV.Sheet1.csv
$vbLabelText   $csharpLabel

5. CSVWriter를 사용하여 CSV 데이터 작업하기

CSV 파일로 데이터를 쓰는 것은 일반적인 작업입니다. CSVHelper 메서드 CSVWriter는 제공된 구분자로 모든 문자와 새로운 줄 문자를 매우 간단한 CSV 작성기로 처리합니다. 여기서 CSVWriter를 사용하여 데이터를 쓰는 방법을 살펴보겠습니다.

5.1. 간단한 콘솔 애플리케이션 생성하기

Visual Studio를 사용하여 제공된 구분자로 콘솔 애플리케이션에서 간단한 CSVWriter를 생성합니다. 프로젝트가 생성되면, 다음 단계는 Person 클래스를 생성하는 것입니다:

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsLiving { get; set; }
}
public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsLiving { get; set; }
}
$vbLabelText   $csharpLabel

이제 Main 메서드 내에서, CSV 파일에 작성할 Person 객체 목록을 작성해 봅시다:

var myPersonObjects = new List<Person>()
{
    new Person { Id = 1, IsLiving = true, Name = "John" },
    new Person { Id = 2, IsLiving = true, Name = "Steve" },
    new Person { Id = 3, IsLiving = true, Name = "James" }
};
var myPersonObjects = new List<Person>()
{
    new Person { Id = 1, IsLiving = true, Name = "John" },
    new Person { Id = 2, IsLiving = true, Name = "Steve" },
    new Person { Id = 3, IsLiving = true, Name = "James" }
};
$vbLabelText   $csharpLabel

5.2. 기본 설정으로 C#에서 CSV 파일 작성하기

CsvHelper는 C#에서 CSVWriter 메서드를 사용하여 CSV를 작성하는 표준 방법으로 자리 잡았으며 사용하기 매우 쉽습니다:

using (var writer = new StreamWriter("filePersons.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
    csv.WriteRecords(myPersonObjects);
}
using (var writer = new StreamWriter("filePersons.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
    csv.WriteRecords(myPersonObjects);
}
$vbLabelText   $csharpLabel

5.3. 데이터 추가하기

프로그램을 실행할 때마다 오래된 CSV 파일이 덮어쓰여질 것입니다. 때때로 우리는 기존 데이터를 덮어쓰는 대신 파일의 끝에 데이터를 추가하길 원합니다. CSVWriter는 제공된 구분자로 이 작업을 수행하는 메서드를 제공하지 않으며, 파일 열기/쓰기 책임은 CSVWriter에 없습니다. 우리는 이것을 FileStream을 사용하고, 그런 다음 해당 FileStream을 사용하여 StreamWriter를 구성함으로써 달성할 수 있습니다. 비록 이 기사의 범위에는 포함되지 않지만, 애플리케이션의 통합적인 부분이기에 그것을 수행하는 방법을 보여드리겠습니다.

var configPersons = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    HasHeaderRecord = false
};
using (var stream = File.Open("filePersons.csv", FileMode.Append))
using (var writer = new StreamWriter(stream))
using (var csv = new CsvWriter(writer, configPersons))
{
    csv.WriteRecords(myPersonObjects);
}
var configPersons = new CsvConfiguration(CultureInfo.InvariantCulture)
{
    HasHeaderRecord = false
};
using (var stream = File.Open("filePersons.csv", FileMode.Append))
using (var writer = new StreamWriter(stream))
using (var csv = new CsvWriter(writer, configPersons))
{
    csv.WriteRecords(myPersonObjects);
}
$vbLabelText   $csharpLabel

기존 파일에 추가하는 것은 까다롭습니다. 추가할 때 순서가 변경되거나 새로운 속성을 추가했을 수 있기 때문입니다. 추가할 때 이를 반드시 고려해야 합니다.

6. 라이선싱

IronXL is an openly commercial C# Excel library. It is free for development and can always be licensed for commercial deployment.Licenses are availablefor single-project use, single developers, agencies, and global corporations, as well as SaaS and OEM redistribution. 모든 라이선스에는 30일 환불 보장, 1년간의 제품 지원 및 업데이트, 개발/스테이징/프로덕션 환경에서의 사용 가능, 그리고 영구 라이선스(일회성 구매)가 포함됩니다. Lite 패키지는 $799에서 시작합니다.

제공된 구분 기호가 있는 CSVWriter는 쉼표로 구분된 요소이며 상업 친화적으로 무료입니다.

7. 요약 및 결론

요약

IronXL은 Excel 파일을 조작하기 위해 필요한 모든 것을 제공하는 완전한 라이브러리입니다. 다양한 형식을 XLSX로 변환할 수 있는 기능을 제공하며, 또한 XLSX에서 CSV와 같은 다른 형식으로 변환할 수 있습니다. 이 상호 변환은 사용자가 다른 파일 형식을 쉽게 조작할 수 있는 유연성을 제공합니다.

반면, CSVWriter는 CSV 파일 형식만 작동하며 매우 제한된 옵션만을 제공합니다. 사용자는 서로 다른 파일 형식 간에 전환할 수 없지만 IronXL에서는 가능합니다. 모든 코드 샘플은 CsvHelper 문서 파일에 있습니다. 이 문서는 프로젝트에서 CSVWriter를 사용하는 가이드라인을 제공합니다.

결론

IronXL은 여러 형식을 지원할 수 있어 CSVHelper.CSVWriter에 비해 명확한 우위를 점합니다. 게다가, 자신의 선택에 따라 수식 및 스타일을 적용할 수 있는 반면, CsvHelper는 CSV 파일의 읽기 및 쓰기만 허용하며, 옵션도 제한적입니다. 또한, 기존 CSV 파일에 새 기록을 추가할 수 없으며 이전 항목을 단순히 덮어씁니다.

자주 묻는 질문

C#에서 Excel 문서를 처리하는 데 CSVWriter 대신 사용할 수 있는 대안은 무엇인가요?

IronXL C#에서 Excel 문서를 처리하는 데 있어 CSVWriter의 훌륭한 대안입니다. Microsoft Excel 없이도 XLS, XLSX, CSV, TSV 등 다양한 Excel 형식을 읽고 편집하고 내보낼 수 있습니다.

.NET 라이브러리를 사용하여 CSV 파일을 Excel 형식으로 변환하려면 어떻게 해야 합니까?

IronXL 사용하면 CSV 파일을 워크북으로 불러온 다음 XLSX 파일로 저장하기만 하면 CSV 파일을 Excel 형식으로 쉽게 변환할 수 있습니다. 이 과정은 파일을 조작하고 저장하는 간단한 코드 명령어를 포함합니다.

IronXL CSVWriter에 비해 어떤 장점을 제공합니까?

IronXL CSVWriter에 비해 여러 가지 장점을 제공합니다. 다양한 파일 형식을 지원하고, Excel 수식을 적용할 수 있으며, 데이터 정렬 및 스타일 지정과 같은 고급 기능을 제공합니다. 반면 CSVWriter는 CSV 파일만 처리할 수 있습니다.

C# 프로젝트에 IronXL 어떻게 설치하나요?

Visual Studio의 NuGet 패키지 관리자를 통해 C# 프로젝트에 IronXL 설치할 수 있습니다. 또는 NuGet 패키지를 다운로드하거나 개발자 명령 프롬프트를 통해 DLL을 수동으로 설치할 수도 있습니다.

IronXL .NET Core 및 Azure 환경에서 사용할 수 있습니까?

네, IronXL .NET Core 및 Azure를 포함한 여러 플랫폼을 지원하므로 다양한 환경에서 Excel 파일 조작이 필요한 애플리케이션 개발에 적합한 다목적 솔루션입니다.

CSVWriter를 사용하여 사용자 정의 클래스 객체를 CSV 파일에 쓰는 것이 가능합니까?

예, CSVWriter는 사용자 정의 클래스 객체를 CSV 파일에 쓰는 것을 지원합니다. CSV 파일을 다룰 때 데이터를 효율적으로 기록할 수 있는 유연하고 사용하기 쉬운 방법을 제공합니다.

IronXL 상업적 용도로 사용하기 위한 라이선스 요구 사항은 무엇입니까?

IronXL 상업적 용도로 사용하려면 라이선스가 필요합니다. 개발 목적으로는 무료로 사용할 수 있지만, 단일 프로젝트용인지 기업용 애플리케이션용인지 등 배포 요구 사항에 따라 다양한 라이선스를 선택할 수 있습니다.

IronXL 엑셀 수식을 어떻게 처리하나요?

IronXL 사용하면 스프레드시트 내에서 Excel 수식을 적용하고 조작할 수 있으므로 C# 애플리케이션 내에서 직접 동적 데이터 계산 및 분석을 위한 강력한 기능을 제공합니다.

IronXL 사용 시 흔히 발생하는 문제 해결 방법은 무엇인가요?

IronXL 에서 흔히 발생하는 문제 해결에는 파일 형식 호환성, 데이터 유형 불일치 또는 설치 오류가 포함될 수 있습니다. 프로젝트 참조가 올바르게 설정되었는지 확인하고 데이터 형식을 검증하면 이러한 문제를 해결하는 데 도움이 될 수 있습니다.

IronXL 기존 Excel 파일에 데이터를 추가할 수 있습니까?

네, IronXL 기존 Excel 파일에 데이터를 추가할 수 있습니다. 기존 통합 문서를 열고 새 데이터를 추가하여 수정한 다음 기존 내용을 덮어쓰지 않고 변경 사항을 저장할 수 있습니다.

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

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

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

Iron Support Team

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