코딩 편의용 연속 Data Row를 Col로 Col을 Row로

|
대략 중요 알고

        private bool ToCode()
        {
            int CollMax = 0;//칼럼 최대 길이
            int RowOffset = 0;//열 offset값
            FileStream fs = new FileStream(this.path, FileMode.Open);
            FileStream fs_c = new FileStream(this.path + "_C", FileMode.Create);
            StreamWriter writer_c = new StreamWriter(fs_c);
            StreamReader reader = new StreamReader(fs);
            fs.Seek(0, SeekOrigin.Begin);
            string buffer = reader.ReadToEnd();
            string[] strSplit = { "rn" };
            string[] row = buffer.Split(strSplit,StringSplitOptions.None);//row 계산하기
            for (int i = 0; i < row.Length; i++)
            {
                if (row[i] == "")
                    RowOffset++;
            }
            string[][] Table = new string[row.Length][];//테이블 Row결정
            //가변 테이블 만들기
            for (int i = 0; row.Length-RowOffset > i; i++)
            {
                string[] temp = row[i].Split('t');
                if (temp.Length > CollMax)
                    CollMax = temp.Length;
                Table[i]= new string[temp.Length];
                Table[i] = temp;
            }
            try//파일에 출력
            {
                for (int i = 0; i < CollMax; i++)
                {
                    if (Table[i] != null)
                    {
                        for (int j = 0; j < row.Length - RowOffset; j++)
                        {
                            if (Table[j][i] != "")
                            {
                                writer_c.Write(""" + Table[j][i] + "", ");
                                writer_c.Flush();
                            }
                        }
                        writer_c.WriteLine();
                        writer_c.Flush();
                    }
                }
            }
            catch
            {
                return false;
            }
            reader.Close();
            writer_c.Close();
            fs_c.Close();
            fs.Close();
            return true;
        }
        private bool ToExcel()
        {
            int CollumOffset = 0;
            int RowMax = 0;
            FileStream fs = new FileStream(this.path, FileMode.Open,FileAccess.Read);
            FileStream fs_c = new FileStream(this.path + "_C", FileMode.OpenOrCreate,FileAccess.Write);
            StreamWriter writer_c = new StreamWriter(fs_c);
            StreamReader reader = new StreamReader(fs);
            fs_c.Seek(0, SeekOrigin.Begin);
            fs.Seek(0, SeekOrigin.Begin);
            string buffer = reader.ReadToEnd();
            string[] liner = { "rn" };//컬럼 분류
            string[] temp = buffer.Split(liner, StringSplitOptions.None);
            for (int i = 0; i < temp.Length; i++)
            {
                if (temp[i] == ""|| temp[i] == " ")
                    CollumOffset++;//필요없는 부분을 위한 옵셋
            }
            char[] spliet = {'"',' ',','};
            string[][] Table = new string[temp.Length-CollumOffset][];
            for (int i = 0; i < Table.Length; i++)
            {//열 데이터 셋팅
                Table[i] = temp[i].Split(spliet,StringSplitOptions.RemoveEmptyEntries);
                if (Table[i].Length > RowMax)
                    RowMax = Table[i].Length;//열의 최대수 구하기
            }
            try
            {//파일에 쓰기
                for (int i = 0; i < RowMax; i++)
                {
                    for (int j = 0; j < (temp.Length - CollumOffset); j++)
                    {
                        try
                        {
                            writer_c.Write(Table[j][i]);
                            writer_c.Write("t");
                            writer_c.Flush();
                        }
                        catch//범위를 벗어났을때의 예외 처리
                        {
                            writer_c.Write("t");
                            writer_c.Flush();
                        }
                    }
                    writer_c.Write("rn");
                    writer_c.Flush();
                }
            }
            catch { return false; }
            reader.Close();
            writer_c.Close();
            fs_c.Close();
            fs.Close();

            return true;
        }
    }

And