C# 텍스트파일 Dataset으로 읽어오기
...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과외,
서울,인천,경기,부천,안산,분당,일산,천안,과천,산본,안양,광명,평촌,수원,평택,오산,용인,부평,시흥,성남,화성,동탄
광주,부산,대구,대전,마산,창원,울산,전주,군산,원주,강릉,충청남도,충청북도,강원도,경상남도,경상북도,전라남도,전라북도,제주도