반응형
CSV는 comma-separated valued의 약자로 쉼표(,)로 분리된 텍스트 파일을 의미합니다.
CSV 파일을 읽기 위해서는 CSV 파일이 필요합니다.
메모장 등으로도 CSV 파일을 만들 수 있지만 저는 엑셀로 만들어 보겠습니다.
엑셀을 실행해서 데이터를 입력합니다.
A1에
#
을 붙이는 이유는 키(Key)라는 것을 알려주기 위함입니다.
입력한 데이터를 파일형식을 CSV UTF-8로 선택해서 저장합니다.
UTF-8은 거의 모든 언어를 표현할 수 있기 때문에 UTF-8로 저장하는 것을 권장합니다.
CSV 파일을 읽기 위한 코드를 작성합니다. 코드는 다음과 같습니다.
using System;
using System.IO;
using System.Text;
namespace CSVReader
{
class Program
{
static void Main(string[] args)
{
string path = "Sample.csv";
ReadCSV(path);
}
static void ReadCSV(string path)
{
try
{
using (FileStream fs = new FileStream(path, FileMode.Open))
{
using (StreamReader sr = new StreamReader(fs, Encoding.UTF8, false))
{
string lines = null;
string[] keys = null;
string[] values = null;
while ((lines = sr.ReadLine()) != null)
{
if (string.IsNullOrEmpty(lines)) return;
if (lines.Substring(0, 1).Equals("#")) // 첫줄에 #이 있을 경우 Key로 처리
{
keys = lines.Split(','); // 콤마로 분리
keys[0] = keys[0].Replace("#", ""); // "#"을 ""로 교체
for (int i = 0; i < keys.Length; i++)
{
Console.Write(keys[i]);
if (i != keys.Length - 1)
Console.Write(", ");
}
Console.WriteLine();
continue;
}
values = lines.Split(','); // 콤마로 분리
for (int i = 0; i < values.Length; i++)
{
Console.Write(values[i]);
if (i != values.Length - 1)
Console.Write(", ");
}
Console.WriteLine();
}
}
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
}
}
위의 코드는 CSV 파일에 있는 데이터를 단순 출력만 하는 예제입니다.
딕셔너리 변수 등을 추가해서 계속 해서 데이터를 가지고 있게 변경할 수도 있습니다.
실행 결과
반응형
댓글