...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과외,
서울,인천,경기,부천,안산,분당,일산,천안,과천,산본,안양,광명,평촌,수원,평택,오산,용인,부평,시흥,성남,화성,동탄
광주,부산,대구,대전,마산,창원,울산,전주,군산,원주,강릉,충청남도,충청북도,강원도,경상남도,경상북도,전라남도,전라북도,제주도
'좋은질문' 카테고리의 다른 글
| C# Label For문 진행중 실시간으로 보이게하기 (0) | 2014.09.04 | 
|---|---|
| C# 랜덤 넘버 다수 라벨 (0) | 2014.09.02 | 
| C# 이벤트 속성을 직접 코드로 작성하였을 때 (0) | 2014.08.31 | 
| C#의 OLEDB로 엑셀파일을 생성해서 내용을 쓰려고 하는데요. (0) | 2014.08.31 | 
| C# 프로그래밍 관련 도서 추천 바랍니다. (0) | 2014.08.31 |