using System; using System.Collections.Generic; using System.Windows.Forms; using System.IO; namespace automating_system_report { #region RAWDATASTRUCT public class RAWDATASTRUCT { public int col, row; // FieldValue가 있던, raw 파일 내에서의 위치 public string FieldValue; // rawData 하나의 값 } #endregion /RAWDATASTRUCT #region RawDataLOADER ////// XML에 추가할 RAWDATA를 로드하고, list에 등록하는 클래스 /// fieldDelimiter의 값에 따라 필드구분을 하려고 했으나, 기본값 " "으로만 동작. /// class RawDATALoader:FileManager { #region public Member public string filedDelimiter = " ";//텍스트파일의 필드구분자, 기본값 spacebar 를 필드 구분으로 함. public ListrawdataList = new List (); #endregion /public Member #region public Method public bool Load(string filename) // { FullPath = filename; if (ExistFile) { FileStream fs = File.OpenRead(filename); StreamReader sr = new StreamReader(fs); int row = 0;// 줄 수 while (sr.Peek() > -1) //한줄 한줄 배열에 저장 { SaveToList(sr.ReadLine(), row); row ++; } sr.Close(); fs.Close(); return true; } return false; } public string[,] To2DArray() { int SizeCol = rawdataList[rawdataList.Count - 1].col; int SizeRow = rawdataList[rawdataList.Count - 1].row; string[,] rtnArray = new string[SizeRow + 1, SizeCol + 1]; int i = 0; foreach (RAWDATASTRUCT r in rawdataList) { rtnArray[r.row, r.col] = r.FieldValue; } return rtnArray; } #endregion /public Method #region private Method private bool SaveToList(string buf,int row) { int whereIsDelimiter = 0; //필드구분자의 문자열 내에서 위치 int col = 0; // 필드 순번.. string cropElement; buf=buf.Trim(); //앞이나 뒤에서 공백을 필드로 오인하는 것을 방지하기 위해 앞뒤 공백 삭제 try { do { whereIsDelimiter = buf.IndexOf(filedDelimiter); //맨 왼쪽 필드 한 개의 길이를 찾기 위해,공백을 찾음. if (whereIsDelimiter > -1) //공백을 찾은 경우 { cropElement = buf.Substring(0, whereIsDelimiter); // 찾은 단일 필드를 저장하기 위해 임시로 변수에 저장 buf = buf.Remove(0, whereIsDelimiter); //다음 반복을 위해 buf에서 크롭한 부분 제거 } else//공백을 못찾은 마지막 필드인 경우 { cropElement = buf; } RAWDATASTRUCT fieldAdd = new RAWDATASTRUCT(); //crop한 필드를 저장하기 위해 임시 RAWDATASTRUCT를 만듬. fieldAdd.FieldValue = cropElement; fieldAdd.row = row; //텍스트 문서상의 줄 위치, 2차원 배열 생성시 사용됨 fieldAdd.col = col; //컬럼값, 2차원 배열 생성시 사용됨 rawdataList.Add(fieldAdd);//crop한 필드를 리스트에 저장 buf = buf.TrimStart(); //문자열 앞의 의미없는 공백제거 col += 1; } while (buf != null & whereIsDelimiter > -1); //buf가 null일 때까지, 더 이상 필드가 없을 때까지 반복. return true; } catch (Exception e) { MessageBox.Show(e.Message); return false; } } #endregion /private Method } #endregion /RawDataLOADER } //
2012-06-28
C# 텍스트파일을 읽어서 2차원 배열로 만들기
성능 데이터가 기록된 텍스트 파일을 열어서 엑셀에 붙여넣기 하기 위해 만듬.
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기