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

C#에서 CSV 파일을 리스트로 변환하는 방법

초보자를 위한 이 튜토리얼에서는 CSV 파일 읽는 방법C#의 리스트에 가져오는 방법을 IronXL 라이브러리를 사용하여 배우게 됩니다. 글쎄요, CSV 파일은 데이터를 저장하고 한 시스템이나 애플리케이션에서 다른 애플리케이션으로 전송하는 데 매우 일반적인 방법이므로 모든 프로그래밍 언어에서 알아야 하는 가장 기본적인 것 중 하나입니다. 프로젝트를 설정하는 것부터 CSV 파일을 효과적으로 구문 분석하는 것까지 모든 것을 다룰 것입니다.

How to Convert CSV File into List in C#

  1. Visual Studio에서 C# 콘솔 프로젝트를 생성하세요.
  2. NuGet 패키지 관리자를 사용하여 C# CSV 라이브러리를 설치하세요.
  3. WorkBook.LoadCSV 메서드를 사용하여 CSV 파일을 로드합니다.
  4. 파일에서 데이터 값을 읽어와 리스트를 채웁니다.
  5. 콘솔에 리스트를 출력합니다.

프로젝트 설정하기

1단계: 새로운 C# 프로젝트 생성하기

  1. Visual Studio 열기: 컴퓨터에서 Visual Studio를 시작하세요.
  2. 새 프로젝트 만들기: "새 프로젝트 만들기"를 클릭하세요. 이는 프로젝트 유형을 선택할 수 있는 창을 엽니다.
  3. 프로젝트 유형 선택: 간단함을 위해 "콘솔 앱(.NET Core)"을 프로젝트 유형으로 선택하세요.
  4. 프로젝트 이름 지정: 프로젝트 이름을 CSVFileReader로 지정하세요.
  5. 위치 선택: 이 프로젝트를 저장할 적절한 위치를 기기에 선택하세요.
  6. 프로젝트 생성: 새로운 C# 프로젝트를 초기화하려면 "생성"을 클릭하세요.

2단계: IronXL 라이브러리 설치하기

  1. NuGet 패키지 관리자 열기: Visual Studio에서 "도구" 메뉴로 이동한 다음 "NuGet 패키지 관리자"를 선택하고 "솔루션용 NuGet 패키지 관리..."를 선택하세요.
  2. IronXL 검색: "찾기" 탭에서 "IronXl.Excel"을 검색하세요.

    CSV 파일을 C# 리스트로 변환하는 방법: 그림 1 - IronXL

  3. IronXL 설치: 검색 결과에서 IronXL 패키지를 찾고 선택한 후 "설치"를 클릭하세요. 모든 라이선스 계약에 동의하고 변경 사항을 검토하세요.
  4. 설치 확인: 설치 후 프로젝트의 참조 항목에 IronXL이 표시되어야 합니다.

이제 CSVFileReader 프로젝트가 IronXL 라이브러리로 설정되었으며, C#에서 CSV 파일을 읽고 처리할 준비가 되었습니다. 이 설정은 이 튜토리얼의 다음 섹션에서 수행할 CSV 읽기 작업의 기초를 형성합니다.

Parsing and Processing CSV Files in C#

프로젝트 설정 및 IronXL 라이브러리 설치가 완료되었으니, 이제 CSV 파일 분석 및 처리에 집중해봅시다. 우리는 CSVFileReader 프로젝트에서 자동으로 생성되는 Program.cs 파일 내에서 작업할 것입니다.

단계 1: 파일 경로 지정

데이터를 읽기 전에 CSV 파일의 위치를 알아야 합니다. Main 메서드에 파일 경로를 저장할 변수를 정의하십시오.

string filename = "csvfile.csv"; // Replace with your actual file path
string filename = "csvfile.csv"; // Replace with your actual file path
$vbLabelText   $csharpLabel

단계 2: CSV 파일 로드

IronXL은 CSV 파일을 로드하는 데 있어 간단함을 제공합니다. WorkBook.LoadCSV 메서드를 사용하여 CSV 파일을 WorkBook 객체로 읽어오십시오.

var csv = WorkBook.LoadCSV(filename);
var csv = WorkBook.LoadCSV(filename);
$vbLabelText   $csharpLabel

단계 3: 데이터 구조 정의

CSV 파일의 데이터 구조를 나타내는 클래스를 생성하십시오. 예를 들어, CSV가 사람에 대한 정보를 포함한다면, Person와 같은 클래스를 정의하십시오:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}
$vbLabelText   $csharpLabel

단계 4: CSV 데이터 분석

이 단계에서는 CSV 파일을 파싱하고 List<Person>에 데이터를 채웁니다. IronXL을 사용하여 CSV 읽기를 처리하고 있으며, 중요한 것은 CSV의 각 행이나 줄을 올바르게 처리하여 헤더 및 잠재적 빈 줄을 고려하는 것입니다. 다음은 코드의 세부적인 분해입니다:

List<Person> people = new List<Person>();
bool isFirstRow = true; // Add a flag to check for the first row
foreach (var row in csv.WorkSheets[0].Rows)
{
    if (isFirstRow)
    {
        isFirstRow = false; // Set the flag to false after skipping the first row
        continue;
    }
    if (row.IsEmpty) continue; // Skip empty rows
    var cells = row.ToArray();
    var person = new Person()
    {
        Name = cells[0].StringValue,
        Age = int.Parse(cells[1].StringValue) // Ensure this is a numeric value
    };
    people.Add(person);
}
List<Person> people = new List<Person>();
bool isFirstRow = true; // Add a flag to check for the first row
foreach (var row in csv.WorkSheets[0].Rows)
{
    if (isFirstRow)
    {
        isFirstRow = false; // Set the flag to false after skipping the first row
        continue;
    }
    if (row.IsEmpty) continue; // Skip empty rows
    var cells = row.ToArray();
    var person = new Person()
    {
        Name = cells[0].StringValue,
        Age = int.Parse(cells[1].StringValue) // Ensure this is a numeric value
    };
    people.Add(person);
}
$vbLabelText   $csharpLabel

이 파싱 과정에서는 먼저 파싱된 데이터를 저장하기 위해 List<Person>를 초기화하고, CSV 파일의 헤더 행을 건너뛰기 위해 isFirstRow 불리언 플래그를 사용합니다. foreach 루프는 CSV 파일의 각 행을 반복합니다. 첫 번째 반복 동안에는 헤더 행이 식별되고 건너뛰져, 데이터 행만 처리되도록 합니다. 그런 다음 row.IsEmpty를 사용하여 각 행이 비어 있지 않은지 확인합니다. 이 단계는 빈 줄로 인해 파싱 오류가 발생하지 않도록 하는 데 중요합니다.

각 데이터 행에 대해 행을 셀 배열 (row.ToArray())로 변환한 다음 이 데이터를 사용하여 Person 객체를 생성합니다. '나이' 문자열을 정수로 변환하는 것과 같이 데이터 유형을 올바르게 분석하고 변환하는 것이 중요합니다. 파싱된 Person 객체는 우리 people 목록에 추가됩니다. 이 접근 방식은 숫자 열에 있는 비숫자 문자열 또는 예상치 못한 빈 행과 같은 잠재적인 문제를 효과적으로 처리하면서, 유효한 데이터 행만 처리되고 저장되도록 보장합니다.

단계 5: 데이터 표시

CSV 데이터를 List<Person>에 파싱한 후 다음 중요한 단계는 데이터를 표시하고 확인하는 것입니다. 이것은 우리의 분석이 성공적이었는지 확인할 뿐만 아니라 출력물을 관찰하고 빠르게 데이터 품질을 확인할 수 있도록 해줍니다. 다음과 같이 구현할 수 있습니다:

foreach (var person in people)
{
    Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
foreach (var person in people)
{
    Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
$vbLabelText   $csharpLabel

다음은 완전한 Program.cs 코드입니다:

using IronXL;
using System;
using System.Collections.Generic;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main(string[] args)
{
    string filename = @"C:\Users\tayya\Downloads\sample_data.csv"; // Replace with your actual file path
    var csv = WorkBook.LoadCSV(filename);
    List<Person> people = new List<Person>();
    bool isFirstRow = true; // Add a flag to check for the first row
    foreach (var row in csv.WorkSheets[0].Rows)
    {
        if (isFirstRow)
        {
            isFirstRow = false; // Set the flag to false after skipping the first row
            continue;
        }
        if (row.IsEmpty) continue; // Skip empty rows
        var cells = row.ToArray();
        var person = new Person()
        {
            Name = cells[0].StringValue,
            Age = int.Parse(cells[1].StringValue) // Ensure this is a numeric value
        };
        people.Add(person);
    }
    foreach (var person in people)
    {
        Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
    }
}
using IronXL;
using System;
using System.Collections.Generic;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main(string[] args)
{
    string filename = @"C:\Users\tayya\Downloads\sample_data.csv"; // Replace with your actual file path
    var csv = WorkBook.LoadCSV(filename);
    List<Person> people = new List<Person>();
    bool isFirstRow = true; // Add a flag to check for the first row
    foreach (var row in csv.WorkSheets[0].Rows)
    {
        if (isFirstRow)
        {
            isFirstRow = false; // Set the flag to false after skipping the first row
            continue;
        }
        if (row.IsEmpty) continue; // Skip empty rows
        var cells = row.ToArray();
        var person = new Person()
        {
            Name = cells[0].StringValue,
            Age = int.Parse(cells[1].StringValue) // Ensure this is a numeric value
        };
        people.Add(person);
    }
    foreach (var person in people)
    {
        Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
    }
}
$vbLabelText   $csharpLabel

코드 출력

파일을 실행하면 콘솔에 목록의 데이터가 표시됩니다:

CSV 파일을 C# 리스트로 변환하는 방법: 그림 2 - 리스트 출력

다양한 데이터 유형 처리

CSV 파일 내에서 다양한 데이터 유형을 다룰 때 각 데이터 열의 특정 유형에 맞게 구문 분석 논리를 조정하는 것이 중요합니다. Person 클래스 예제에서 Name는 문자열이며 StringValue를 사용하여 직접 할당할 수 있지만, Age와 같은 숫자 필드는 Int32.Parse 또는 Convert.ToInt32을 사용하여 문자열을 정수로 변환해야 합니다. 이것은 유형 불일치 오류를 피하기 위해 필수적입니다.

날짜와 같은 복잡한 데이터 유형의 경우, DateTime.Parse을 사용하여 문자열로 표현된 날짜를 DateTime 객체로 변환하십시오. CSV 파일에서 사용된 날짜 형식을 인지하고 코드 내에서 예상되는 형식과 일치하도록 하는 것이 중요합니다. 일관되지 않은 날짜 형식은 구문 분석 오류나 잘못된 데이터 해석으로 이어질 수 있습니다.

결론

IronXL을 사용하여 C#에서 CSV 파일의 데이터를 읽고, 구문 분석하고, 표시하는 방법을 배웠습니다. 이 접근 방식은 다양한 데이터 구조 및 파일 형식에 적용될 수 있습니다. 따라서 이는 주력 언어로 C#을 선택한 모든 개발자에게 전체적으로 유용한 기술을 나타냅니다.

IronXL은 사용자에게 기능을 체험할 수 있는 무료 체험판을 제공합니다. 체험 기간이 끝나면, IronXL의 라이선스는 $799의 시작 가격에서 시작합니다.

예외와 엣지 케이스를 처리하여 더욱 강력한 코드를 작성해야 한다는 것을 명심하십시오, 특히 다양한 데이터 유형을 관리하고 대형 파일을 사용할 때. 더 많은 IronXL 기능을 실험하고 탐색하여 C#에서 데이터를 처리하는 능력을 향상하세요. 즐거운 코딩 되세요!

자주 묻는 질문

C#에서 CSV 파일을 읽어 리스트에 저장하는 방법은 무엇인가요?

IronXL 라이브러리를 사용하면 C#에서 CSV 파일을 리스트로 읽어올 수 있습니다. 먼저 Visual Studio에서 C# 콘솔 프로젝트를 생성하고 NuGet 패키지 관리자를 통해 IronXL 설치합니다. 그런 다음 WorkBook.LoadCSV 메서드를 사용하여 CSV 파일을 로드하고 데이터를 리스트로 파싱합니다.

C#에서 CSV 파일을 불러오려면 어떤 메서드를 사용해야 하나요?

C#에서 CSV 파일을 불러오려면 IronXL 라이브러리의 WorkBook.LoadCSV 메서드를 사용하면 됩니다. 이 메서드는 파일 경로를 매개변수로 받습니다.

CSV 파일의 내용과 일치하는 데이터 구조를 어떻게 정의해야 할까요?

CSV 파일의 열과 일치하는 속성을 가진 'Person' 클래스와 같은 클래스를 정의하세요. 이렇게 하면 CSV에서 가져온 데이터를 객체 지향 형식으로 구조화하는 데 도움이 됩니다.

CSV 파일에서 헤더 행을 건너뛰는 데 사용할 수 있는 기술은 무엇입니까?

헤더 행을 건너뛰려면, 해당 행이 첫 번째 행인지 확인하고 첫 번째 행인 경우 처리를 건너뛰고 다음 반복으로 진행하는 부울 플래그를 구현하십시오.

C#에서 CSV 파일을 파싱할 때 빈 행을 어떻게 처리해야 할까요?

IronXL 라이브러리의 IsEmpty 와 같은 행 속성을 사용하여 빈 행을 확인하고 구문 분석 과정에서 해당 행을 건너뛸 수 있습니다.

CSV 파일을 처리할 때 다양한 데이터 유형을 다루는 것이 왜 중요한가요?

다양한 데이터 유형을 올바르게 처리하면 데이터가 정확하게 처리되고 유형 불일치 오류를 방지할 수 있으며, 특히 숫자 또는 날짜 필드를 다룰 때 더욱 중요합니다.

CSV 파일 처리와 관련된 일반적인 어려움은 무엇인가요?

일반적인 어려움으로는 다양한 데이터 유형 처리, 비어 있거나 형식이 잘못된 행 건너뛰기, 오류 없이 정확한 데이터 구문 분석 및 처리 보장 등이 있습니다.

C#에서 CSV 파일 처리를 위해 라이브러리를 사용하는 장점은 무엇인가요?

C#에서 CSV 처리를 위해 IronXL 라이브러리를 사용하면 직관적인 메서드를 통해 CSV 파일의 로드 및 구문 분석이 간소화되어 개발자가 데이터를 효율적으로 처리할 수 있습니다.

CSV 파일 읽기를 위한 C# 프로젝트를 설정하려면 어떤 단계를 따라야 하나요?

먼저 Visual Studio에서 C# 콘솔 프로젝트를 생성하고, NuGet 패키지 관리자를 사용하여 IronXL 라이브러리를 설치한 다음, WorkBook.LoadCSV 메서드를 사용하여 CSV 파일을 로드하고 구문 분석하여 목록으로 변환합니다.

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

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

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

Iron Support Team

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