안녕하세요. CSV파일을 DataTable로 가져오기 글에서 동일하게 따라했는데 안된다고 하시는 분들이 있습니다.

원본 글: https://ilbbang.tistory.com/entry/C-Windows-Form-CSV파일을-DataTable로-가져오기

저도 이 점 충분히 이해합니다. 다른 글 보고 따라했는데 안되는 경우가 종종 있습니다. 그래서 전체 코드 및 영상, 샘플 파일을 공개합니다. 위와 같이 따라했을 경우 안되는 경우는 해당 컴퓨터의 환경 문제로 예상됩니다. 절차 코드 등에 대한 설명은 전부 생략했습니다. 설명이 필요하신 분은 위에 있는 글을 먼저 보시기 바랍니다.

우선 제가 처음 실행해서 프로젝트 생성, 화면 및 코드 작성, 디버깅 과정을 영상으로 만들었습니다.

위 영상에서 코드가 필요한 파일은 form1.cs 1개의 파일입니다. 해당 파일의 코드 전부를 아래에 작성했습니다.

using System;
using System.Data;
using System.Windows.Forms;

using System.IO;
using System.Data.OleDb;
using System.Globalization;

namespace WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                string filename = openFileDialog1.FileName;
                DataTable dt1 = getDataTableFromCsv(filename, false); ;
            }
        }

        private DataTable getDataTableFromCsv(string path, bool isFirstRowHeader)
        {
            string header = isFirstRowHeader ? "Yes" : "No";
            string pathOnly = Path.GetDirectoryName(path);
            string fileName = Path.GetFileName(path);
            string sql = @"SELECT * FROM [" + fileName + "]";
            using (OleDbConnection connection = new OleDbConnection(
                @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathOnly + ";Extended Properties=\"Text;HDR=" + header + "\""))
            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;
            }
        }
    }
}

이제 마지막으로 샘플 파일입니다. 샘플파일은 아무 csv 파일로 하셔도 상관없습니다.
예제 파일도 엑셀로 랜덤번호 30개 생성해서 숫자로 바꾼것일 뿐 아무 의미 없는데이터입니다.
그래도 혹시 모르니 제가 로드했던 샘플파일을 첨부합니다.

sample1.csv
0.00MB

위 내용에 대하여 궁금하신 점 있으면 댓글 남겨주세요.

감사합니다.

+ Recent posts