C# Csv Serializer 사용법 (with CsvHelper)
Csv Serializer
C# Csv Serializer 사용법 (with CsvHelper)
CSV 란 ?
CSV (Comma-Separated Values) 는
쉼표(,)로 구분된 데이터 파일 포맷입니다.
표 형식의 데이터를 텍스트로 저장하는 가장 간단하고 널리 사용되는 방식입니다.
주로 엑셀, 데이터베이스, 통계 툴 등에서 사용합니다.
예시:
1
2
3
Name,Age,IsStudent
홍길동,30,false
김영희,25,true
CSV 의 장단점
장점
- 단순함: 텍스트 기반이랑 생성과 편집이 쉽다.
- 범용성: 대부분의 프로그램(엑셀, 구글 스프레드시트 등)과 호환된다.
- 가볍다: 별다른 구조가 없어 파일 용량이 작다.
단점
- 구조 제한: 중첩된 데이터(배열, 객체) 표현이 어렵다.
- 데이터 오류: 쉼표나 줄바꿈이 데이터에 포함되면 파싱이 복잡해진다.
- 메타테이더 없음: 데이터 타입 정보가 포함되지 않는다.
CsvHelper 사용법
CsvHelper는 C# 에서 CSV 를 쉽게 다룰 수 있게 도와주는 강력한 라이브러리 입니다.
1. 설치
Nuget 패키지 매니저에서 설치합니다.
1
Install-Package CsvHelper
또는 Visual Studio → 프로젝트 → Nuget 관리 → CsvHelper
검색 → 설치
2. 객체 리스트를 CSV 로 저장 (쓰기)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using CsvHelper;
using System.Globalization;
using System.IO;
var people = new List<Person>
{
new Person { Name = "홍길동", Age = 30, IsStudent = false },
new Person { Name = "김영희", Age = 25, IsStudent = true }
};
using (var writer = new StreamWriter("people.csv"))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
csv.WriteRecords(people);
}
생성되는 people.csv 파일:
1
2
3
Name,Age,IsStudent
홍길동,30,False
김영희,25,True
3. CSV 파일을 객체 리스트로 읽기 (읽기)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
using CsvHelper;
using System.Globalization;
using System.IO;
using (var reader = new StreamReader("people.csv"))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
var people = csv.GetRecords<Person>().ToList();
foreach (var person in people)
{
Console.WriteLine($"{person.Name} - {person.Age} - {person.IsStudent}");
}
}
4. 클래스 예시
1
2
3
4
5
6
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public bool IsStudent { get; set; }
}
추가 팁
- 헤더 이름과 속성명이 다를 때 매핑하기
1
2
3
4
5
6
7
8
9
10
11
using CsvHelper.Configuration;
public class PersonMap : ClassMap<Person>
{
public PersonMap()
{
Map(m => m.Name).Name("이름");
Map(m => m.Age).Name("나이");
Map(m => m.IsStudent).Name("학생여부");
}
}
사용 방법:
1
2
3
4
5
6
using (var reader = new StreamReader("people.csv"))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
csv.Context.RegisterClassMap<PersonMap>();
var people = csv.GetRecords<Person>().ToList();
}
- 구분자를 쉼표(,) 대신 다른 문자로 변경하기
1
2
3
4
5
6
7
8
9
10
var config = new CsvHelper.Configuration.CsvConfiguration(CultureInfo.InvariantCulture)
{
Delimiter = ";"
};
using (var writer = new StreamWriter("people_semicolon.csv"))
using (var csv = new CsvWriter(writer, config))
{
csv.WriteRecords(people);
}
요약
- CSV 는 간단하고 범용성 높은 데이터 저장 포맷이다.
- CsvHelper를 이용하면 C#에서 쉽고 빠르게 CSV를 읽고 쓸 수 있다.
- 매핑, 구분자 변경 등 다양한 설정도 가능하다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.