コード例 #1
0
        private CsvFileStructure.LocationInFile DetermineLocationInFile(int LineIndex)
        {
            // 如果已經進入 FooterLines,則直接回傳 LocationInFile.FooterLines
            if (Cfs.FooterLinesCount > 0 &&
                (FileTotalLinesCount - LineIndex) < Cfs.FooterLinesCount)
            {
                return(CsvFileStructure.LocationInFile.FooterLines);
            }

            // 針對所有分界點由低到高排序 (每個分界點皆須是 Unique,不適用的分界點為 -1)
            List <Tuple <int, CsvFileStructure.LocationInFile> > list = new List <Tuple <int, CsvFileStructure.LocationInFile> >();

            list.Add(Tuple.Create(Cfs.HeaderLineStartAt, CsvFileStructure.LocationInFile.HeaderLines));
            list.Add(Tuple.Create(Cfs.DataLinesStartAt, CsvFileStructure.LocationInFile.DataLines));
            list.Sort((x, y) => x.Item1.CompareTo(y.Item1));

            // 依序比較是否進入該點範圍內,直到全部比較完畢
            CsvFileStructure.LocationInFile result = CsvFileStructure.LocationInFile.HeadingLines;
            foreach (Tuple <int, CsvFileStructure.LocationInFile> entry in list)
            {
                if (entry.Item1 <= LineIndex)
                {
                    result = entry.Item2;
                }
            }
            return(result);
        }
コード例 #2
0
        private void ProcessForEachLine(string Line, int LineIndex)
        {
            CsvFileStructure.LocationInFile Loc = DetermineLocationInFile(LineIndex);
            switch (Loc)
            {
            case CsvFileStructure.LocationInFile.HeadingLines:
            {
                break;
            }

            case CsvFileStructure.LocationInFile.HeaderLines:
            {
                Headers = Line.Split(Delimiters, StringSplitOptions.RemoveEmptyEntries);
                break;
            }

            case CsvFileStructure.LocationInFile.DataLines:
            {
                ProcessForEachDataline(Line);
                break;
            }

            case CsvFileStructure.LocationInFile.FooterLines:
            {
                break;
            }

            default:
            {
                break;
            }
            }
        }