안녕하세요. 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

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

감사합니다.

Visual Studio 윈도우 폼에서 CSV 파일을 DataTable로 가져오는 내용의 글을 올려보겠습니다.

우선 Visual Studio 프로그램 실행 후 위쪽 메뉴의 "파일" -> "새로 만들기" -> "프로젝트" 를 선택(클릭)합니다.

왼쪽 Visual 템플릿에서 "Visual C#" -> "Windows" -> "Windows Forms 응용 프로그램" 을 선택한 후에 아래쪽에 프로젝트 "이름", "위치" 를 지정하고 오른쪽 아래에 있는 "확인" 단추를 선택(클릭) 합니다.

그러면 기본 Form1이 만들어 지고 응용 프로그램을 만들 준비가 되었습니다.
도구상자에서 OpenFileDialog 를 Form1.cs[디자인] 화면 아무데나 마우스를 드레그하여 놓습니다.

그러면 아래 그림과 같이 Form1 아래쪽에 OpenFileDialog1이 추가된 것을 볼 수 있습니다.

OpenFileDialog1 은 파일을 열때 사용하는 도구이지만 Form 화면에 나타나지 않습니다.
이를 실행시키기 위해서는 버튼 등 화면에 보이는 도구가 필요합니다.

OpenFileDialog1 을 실행시키기 위한 Button을 Form1.cs[디자인] 화면 아무데나 마우스를 드레그하여 놓습니다.

그러면 아래 그림과 같이 Form1 안쪽에 Button1이 추가된 것을 볼 수 있습니다.

Button1 의 속성을 확인하고 Text를 "불러오기"로 변경합니다.

"불러오기" Button1을 마우스 더블클릭하면 다음 그림과 같이 클릭 시 실행될 코드를 입력할 공간이 나타납니다(Button1_Click)

다시 Form1.cs[디자인] 화면으로 돌아옵니다.

이번에는 OpenFileDialog1의 속성 내용을 수정하기 위해 Form1 아래쪽에 있는 OpenFileDialog1 을 클릭합니다.
속성에서 아래 내용대로 수정합니다.
첫번째 그림 Filter 속성은 CSV파일만 보이게 하기 위해 필터링 옵션을 추가합니다.

두번째, 세번째 그림은 OpenFileDialog 가 열릴때 기본으로 출력될 파일 이름입니다. 선택하기 전에는 아무 이름도 없는게 맞기 때문에 기본 입력된 값을 지웁니다.

네번째 그림은 OpenFileDialog 창이 열릴 때 왼쪽 상단에 뜨는 Title 입니다. 기능보다는 보여지는 화면이기 때문에 테스트할 때에는 굳이 안 바꿔도 상관없습니다.

Form1.cs 코드파일로 이동합니다,(Form1.cs[디자인] 화면에서 키보드 "F7" 단추를 선택(클릭)하면 코드파일로 이동합니다.)
버튼 클릭할때의 코드를 다음과 같이 입력합니다.

CSV파일을 DataTable 파일로 변환해 주는 매서드를 아래와 같이 추가합니다.

그리고 테스트를 위해ㅓ DataTable이 완성된 다음줄에 중단점을 걸어 줍니다.
(34줄 바로 옆에 흰 부분을 마우스로 선택(클릭)하면 아래 그림과 같이 빨간색 원이 나타나 중단점이 설정됩니다.)

이제 테스트를 끝낼 준비가 완료되었습니다.

상단 메뉴에서 "디버그" -> "디버깅 시작" 단추를 선택합니다.

디버깅이 시작되고 Form1이 실행되었습니다.

불러오기 단추를 선택(클릭)합니다.

엑셀 파일을 불러올 OpenFileDialog1이 실행되었습니다.

CSV파일 하나를 선택하고 열기 단추를 선택(클릭) 합니다.

그러면 아래 화면과 같이 중단점에서 코드가 중단된 것을 확인할 수 있습니다.

DataTable dt1에 CSV파일의 내용이 잘 들어갔는지 확인해보겠습니다.

여러가지 방법이 있지만 dt1부분을 마우스로 선택(클릭) 후 잠시 기다려 주면 아래 그림과 같이 dt1에 대한 세부 내용을 볼 수 있는 창이 나타납니다.
돋보기 그림을 마우스 선택(클릭) 합니다.

그러면 DataSet 시각화 도우미가 나타나며 CSV에 있는 내용 그대로 들어온 것을 확인할 수 있습니다.

이제 CSV에 있는 내용을 DataTable 로 가져와서 프로그래밍 할 수 있습니다.

이전 글이어서 코드가 그림파일입니다.
더욱 쉽게 따라하실 수 있게 영상, 코드, 샘플파일을 포함한 글을 하나 더 작성했습니다.
아래 글을 확인해 주세요.

https://ilbbang.tistory.com/entry/C-Windows-Form-CSV파일을-DataTable로-가져오기-영상코드샘플파일

감사합니다.

+ Recent posts