728x90
728x170
▶ Program.cs
using System;
using System.Data;
using System.Data.OleDb;
using System.Globalization;
using System.IO;
using System.Reflection;
namespace TestProject
{
/// <summary>
/// 프로그램
/// </summary>
class Program
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Static
//////////////////////////////////////////////////////////////////////////////// Private
#region 데이터 테이블 구하기 - GetDataTable(csvFilePath, useFirstRowHeader)
/// <summary>
/// 데이터 테이블 구하기
/// </summary>
/// <param name="csvFilePath">CSV 파일 경로</param>
/// <param name="useFirstRowHeader">첫번째 행 헤더 사용 여부</param>
/// <returns>데이터 테이블</returns>
private static DataTable GetDataTable(string csvFilePath, bool useFirstRowHeader)
{
string headerFlag = useFirstRowHeader ? "Yes" : "No";
string directoryPath = Path.GetDirectoryName(csvFilePath);
string fileName = Path.GetFileName(csvFilePath);
string sql = $"SELECT * FROM [{fileName}]";
string connectionString = $"Provider=Microsoft.Jet.OleDb.4.0; Data Source={directoryPath};Extended Properties=\"Text;HDR={headerFlag};FMT=Delimited\"";
using(OleDbConnection connection = new OleDbConnection(connectionString))
{
using(OleDbCommand command = new OleDbCommand(sql, connection))
{
using(OleDbDataAdapter adapter = new OleDbDataAdapter(command))
{
DataTable dataTable = new DataTable();
dataTable.Locale = CultureInfo.CurrentCulture;
adapter.Fill(dataTable);
return dataTable;
}
}
}
}
#endregion
#region 프로그램 시작하기 - Main()
/// <summary>
/// 프로그램 시작하기
/// </summary>
private static void Main()
{
string applicationDirectoryPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string sourceFilePath = Path.Combine(applicationDirectoryPath, "sample.csv");
DataTable dataTable = GetDataTable(sourceFilePath, true);
foreach(DataRow dataRow in dataTable.Rows)
{
Console.WriteLine($"{dataRow[0]} {dataRow[1]}");
}
}
#endregion
}
}
※ OLE DB는 32비트 버전만 사용 가능하다.
728x90
그리드형(광고전용)
'C# > Common' 카테고리의 다른 글
[C#/COMMON] 이스케이프 유니코드 문자열 구하기 (0) | 2022.05.23 |
---|---|
[C#/COMMON] Process 클래스 : 원격 데스크톱 실행하기 (0) | 2022.05.13 |
[C#/COMMON] Process 클래스 : 원격 데스크톱 계정 등록하기 (0) | 2022.05.13 |
[C#/COMMON] Regex 클래스 : Replace 정적 메소드를 사용해 한글 문자열 구하기 (0) | 2022.05.13 |
[C#/COMMON] IPAddress 클래스 : HostToNetworkOrder/NetworkToHostOrder 정적 메소드를 사용해 리틀 엔디안/빅 엔디안 값 변환하기 (0) | 2022.05.13 |
[C#/COMMON] KRX 주식 시세 데이터 구하기 (0) | 2022.03.31 |
[C#/COMMON] DateTime 구조체 : FromOADate 정적 메소드를 사용해 배정도 실수 값에서 날짜/시간 구하기 (0) | 2022.03.30 |
[C#/COMMON] DateTime 구조체 : ToOADate 메소드를 사용해 배정도 실수 값 구하기 (0) | 2022.03.30 |
[C#/COMMON] WEBP 파일로 변환하기 (0) | 2022.01.29 |
[C#/COMMON] 몫/나머지 구하기 (0) | 2022.01.25 |