좋은질문

C# 텍스트파일 Dataset으로 읽어오기

JustineBaek 2014. 9. 1. 22:05
 

 

 

 

 

...C# 텍스트파일 Dataset으로 읽어오기

 

텍스트파일(너비가 일정함)을 dataset으로 담고 싶고 싶습니다.
엑셀이나, CSV(콤마구분) 은 소스가 많은데.. 텍스트파일(너비 일정함)은 잘 없네요.

사실 텍스트 파일의 확장자가 .text 는 아니고요, 2013-08-19.OK 입니다.
내용은 아래와 같습니다.
dataset으로 담는 방법이 있나요?

1 0.002 0.001 0.006 11.302 0.002
2 0.002 0.000 0.012 11.303 0.004
3 0.001 0.002 0.016 11.304 0.004
4 0.000 0.001 0.002 11.302 0.004

 

 

 

 

안녕하세요?

 

1. btnRead 버튼이 눌리면, *.OK 파일을 읽어, RichTextBox에 표시합니다.

private void btnRead_Click(object sender, EventArgs e)
{
      OpenFileDialog dialog = new OpenFileDialog();
      dialog.Filter = "OK File(*.OK)|*.OK";

 

      // 파일을 지정합니다.
      string fileName = "";
      if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            fileName = dialog.FileName;

 

      // DataSet에 파일을 불러옵니다.
      DataSet ds = GetDataSetFromFile(fileName);
      DataTable table = ds.Tables[0];

 

      // 확인을 위해, RichTextBox에 출력해 봅니다.[rtxData로 명명함]
      ShowText(table);
}

 

2. 경로가 포함된 파일이름을 받아, 내용이 채워진 DataSet을 반환합니다. ← 핵심로직

private DataSet GetDataSetFromFile(string fileName)
{
      DataSet ds = new DataSet();
 
      // 예제는 첫번째 table만 이용하여 기록합니다.
      DataTable table = new DataTable();

 

      // 파일 형식에 맞추어 컬럼을 정의합니다.
      table.Columns.Add("C01");           
      table.Columns.Add("C02");
      table.Columns.Add("C03");
      table.Columns.Add("C04");
      table.Columns.Add("C05");
      table.Columns.Add("C06");

 

      try
      {
            // 지정한 파일로 부터 자료를 읽습니다.
            FileInfo file = new FileInfo(fileName);
            StreamReader reader = file.OpenText();

 

            // 정보를 DataTable에 저장합니다.
            while (reader.Peek() >= 0)
            {
                  DataRow newRow = table.NewRow();

                  string[] datas = reader.ReadLine().Split('\t');

                  for (int col = 0; col < datas.Length; col++)
                        newRow[col] = datas[col]; 

 

                  table.Rows.Add(newRow);

                  datas = null;

                  newRow = null;
            }

 

            // 기록된 table을 DataSet에 append 합니다.
            ds.Tables.Add(table);

 

            // 리소스 해제
            reader = null;
            file = null;
      }
     catch (Exception ex)
     {
            MessageBox.Show(ex.Message);
      }
      finally 
      {
  
      }

 

      return ds;

} 

 

3. DataSet의 내용을 검증하기 위해 RichTextBox에 표시해 봅니다.

private void ShowText(DataTable table)
{
      StringBuilder builder = new StringBuilder();

      foreach (DataRow row in table.Rows)
      {
            string aRow = row["C01"].ToString() + "\t" +
                               row["C02"].ToString() + "\t" +
                               row["C03"].ToString() + "\t" +
                               row["C04"].ToString() + "\t" +
                               row["C05"].ToString() + "\t" +
                               row["C06"].ToString();
            builder.AppendLine(aRow);
      }

      rtxData.Text = builder.ToString();
}

 

 

 

written by

  

legend 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C과외/C#과외/VB과외 프로그래밍 과외.서울인천경기-방문강의.기타전국-화상강의.제대로 체계적으로 배우고싶은분들.15년경력 프리랜서.삼성/포스코/한진 등.

서울,인천,경기,분당,일산,과천,산본,부천,부평,평촌,안산,안양,광명,용인,시흥,성남,수원,평택,오산,화성,동탄,천안,아산,

c#프로그래밍1:1과외, 15년 이상 프로젝트 경력의 프리랜서 직접 강의,

c#프로그래밍 과외, c#프로그래밍교육, IT·컴퓨터·컴퓨터과외비·프로그래밍과외, c# 강좌, c# 프로그래밍,

데이터베이스, 데이터베이스 프로그래밍, db, DB, 과외비,컴퓨터1:1,컴퓨터개인지도,컴퓨터실무과외,컴퓨터과외,컴퓨터1:1과외,

서울,인천,경기,부천,안산,분당,일산,천안,과천,산본,안양,광명,평촌,수원,평택,오산,용인,부평,시흥,성남,화성,동탄

광주,부산,대구,대전,마산,창원,울산,전주,군산,원주,강릉,충청남도,충청북도,강원도,경상남도,경상북도,전라남도,전라북도,제주도