프로그래밍 언어/C#

C# 파일 입출력 가이드 CSV, XLSX, JSON 파일 처리 방법 - C# 18

eco7T 2024. 10. 31. 08:59
반응형

오늘 지난 글에 이야기했던 파일 입출력 중 다루지 않았던 CSV, XLSX, JSON 파일 처리에 대해 정리해 보겠습니다.

CSV, XLSX, JSON 파일 처리 방법
CSV, XLSX, JSON 파일 처리 방법

 

C# 프로그래밍 - CSV, XLSX, JSON 파일 처리

파일 입출력은 데이터를 파일로 저장하거나 파일로부터 데이터를 읽어오는 작업을 의미합니다. CSV, XLSX, JSON과 같은 파일 형식은 서로 다른 데이터 구조와 목적을 가지고 있으며, 각각의 특성을 이해하고 적절히 사용하는 것이 중요합니다.

  • CSV 파일: Comma-Separated Values의 약자로, 쉼표로 구분된 값들이 행과 열로 구성된 파일입니다. 주로 간단한 데이터 저장에 사용됩니다.
  • XLSX 파일: Microsoft Excel의 파일 형식으로, 테이블 형태의 데이터를 저장하는 데 사용됩니다. CSV보다 복잡한 구조를 지원합니다.
  • JSON 파일: JavaScript Object Notation의 약자로, 키-값 쌍을 통해 데이터를 구조화하여 저장합니다. 주로 웹 서비스에서 데이터를 주고받는 용도로 사용됩니다.
반응형

 

  CSV 파일 처리

CSV 파일 읽기

CSV 파일을 읽기 위해서는 `StreamReader`와 `Split` 메서드를 사용할 수 있습니다. 이 과정을 통해 파일을 한 줄씩 읽고 각 값을 분리하여 사용합니다.

using System; using System.IO; class CSVReader { static void Main(string[] args) { string filePath = "data.csv"; try { using (StreamReader sr = new StreamReader(filePath)) { string line; while ((line = sr.ReadLine()) != null) { string[] values = line.Split(','); foreach (var value in values) { Console.WriteLine(value); } } } } catch (Exception e) { Console.WriteLine("파일을 읽는 도중 오류가 발생했습니다: " + e.Message); } } }

이 코드는 `data.csv` 파일을 읽어 들여 각 행의 값을 쉼표를 기준으로 나눕니다. `StreamReader`를 통해 파일을 한 줄씩 읽으며, `Split` 메서드를 사용해 쉼표로 구분된 값을 나누어 출력합니다.

 

 

 

CSV 파일 쓰기

CSV 파일에 데이터를 쓰기 위해서는 `StreamWriter`를 사용할 수 있습니다.

using System; using System.IO; class CSVWriter { static void Main(string[] args) { string filePath = "output.csv"; try { using (StreamWriter sw = new StreamWriter(filePath)) { sw.WriteLine("Name, Age, City"); sw.WriteLine("Alice, 30, New York"); sw.WriteLine("Bob, 25, Los Angeles"); } Console.WriteLine("CSV 파일이 성공적으로 작성되었습니다."); } catch (Exception e) { Console.WriteLine("파일을 작성하는 도중 오류가 발생했습니다: " + e.Message); } } }

이 코드는 `output.csv` 파일을 생성하고, 지정된 데이터를 작성합니다. `StreamWriter`를 사용하여 파일을 열고 데이터를 한 줄씩 작성합니다.

 

 

  XLSX 파일 처리

XLSX 파일은 Excel 파일이기 때문에, C#에서 이러한 파일을 처리하려면 외부 라이브러리를 사용하는 것이 편리합니다. 여기서는 `EPPlus`라는 라이브러리를 사용하여 XLSX 파일을 읽고 씁니다.

 

EPPlus 라이브러리 설치

EPPlus는 NuGet 패키지 관리자를 통해 설치할 수 있습니다. Visual Studio의 패키지 관리자 콘솔에서 다음 명령어를 실행하여 설치합니다.

Install-Package EPPlus

 

XLSX 파일 읽기

using System; using OfficeOpenXml; using System.IO; class XLSXReader { static void Main(string[] args) { string filePath = "data.xlsx"; FileInfo fileInfo = new FileInfo(filePath); using (ExcelPackage package = new ExcelPackage(fileInfo)) { ExcelWorksheet worksheet = package.Workbook.Worksheets[0]; int rows = worksheet.Dimension.Rows; int columns = worksheet.Dimension.Columns; for (int i = 1; i <= rows; i++) { for (int j = 1; j <= columns; j++) { Console.Write(worksheet.Cells[i, j].Text + "\t"); } Console.WriteLine(); } } } }

이 코드는 `data.xlsx` 파일을 읽어 들여 각 셀의 값을 출력합니다. EPPlus 라이브러리를 사용하여 Excel 파일을 열고, 첫 번째 워크시트를 선택하여 데이터를 읽습니다.

 

 

 

XLSX 파일 쓰기

using System; using OfficeOpenXml; using System.IO; class XLSXWriter { static void Main(string[] args) { string filePath = "output.xlsx"; FileInfo fileInfo = new FileInfo(filePath); using (ExcelPackage package = new ExcelPackage(fileInfo)) { ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Sheet1"); worksheet.Cells[1, 1].Value = "Name"; worksheet.Cells[1, 2].Value = "Age"; worksheet.Cells[1, 3].Value = "City"; worksheet.Cells[2, 1].Value = "Alice"; worksheet.Cells[2, 2].Value = 30; worksheet.Cells[2, 3].Value = "New York"; worksheet.Cells[3, 1].Value = "Bob"; worksheet.Cells[3, 2].Value = 25; worksheet.Cells[3, 3].Value = "Los Angeles"; package.Save(); Console.WriteLine("XLSX 파일이 성공적으로 작성되었습니다."); } } }

이 코드는 `output.xlsx` 파일을 생성하고, 새로운 워크시트에 데이터를 작성합니다.

 

 

 

  JSON 파일 처리

JSON 파일은 구조화된 데이터를 쉽게 저장하고 읽을 수 있는 형식입니다. C#에서는 `System.Text.Json` 네임스페이스를 사용하여 JSON 파일을 처리할 수 있습니다.

 

JSON 파일 읽기

using System; using System.IO; using System.Text.Json; class JSONReader { public class Person { public string Name { get; set; } public int Age { get; set; } public string City { get; set; } } static void Main(string[] args) { string filePath = "data.json"; try { string jsonString = File.ReadAllText(filePath); Person person = JsonSerializer.Deserialize(jsonString); Console.WriteLine($"Name: {person.Name}, Age: {person.Age}, City: {person.City}"); } catch (Exception e) { Console.WriteLine("파일을 읽는 도중 오류가 발생했습니다: " + e.Message); } } }

이 코드는 `data.json` 파일을 읽어 `Person` 객체로 변환합니다. `JsonSerializer`를 사용하여 JSON 문자열을 C# 객체로 역직렬화합니다.

 

 

 

JSON 파일 쓰기

using System; using System.IO; using System.Text.Json; class JSONWriter { public class Person { public string Name { get; set; } public int Age { get; set; } public string City { get; set; } } static void Main(string[] args) { Person person = new Person { Name = "Alice", Age = 30, City = "New York" }; string filePath = "output.json"; try { string jsonString = JsonSerializer.Serialize(person); File.WriteAllText(filePath, jsonString); Console.WriteLine("JSON 파일이 성공적으로 작성되었습니다."); } catch (Exception e) { Console.WriteLine("파일을 작성하는 도중 오류가 발생했습니다: " + e.Message); } } }

이 코드는 `output.json` 파일을 생성하고, `Person` 객체를 JSON 문자열로 변환하여 파일에 저장합니다.

반응형