예제 #1
0
파일: AQCSV.cs 프로젝트: yanxuYX/examples
        public static AQCSVTimeSeries Load(string csv)
        {
            AQCSVTimeSeries ret = new AQCSVTimeSeries();

            if (string.IsNullOrEmpty(csv))
            {
                return(ret);
            }
            ret.metaData = new AQCSVMetaData();
            using (StringReader reader = new StringReader(csv))
            {
                string line      = null;
                int    lineCount = 0;
                //meta header
                line = reader.ReadLine();
                ret.metaData.headers = CSVUtil.splitCCVLine(line);
                ret.metaData.columns = ret.metaData.headers.Length;
                lineCount++;

                //meta data
                line = reader.ReadLine();
                ret.metaData.datas = CSVUtil.splitCCVLine(line);
                int rangeCount = int.Parse(ret.metaData["NumRanges"]);
                ret.ranges = new AQCSVTable[rangeCount];
                lineCount++;

                for (int i = 0; i < rangeCount; i++)
                {
                    ret.ranges[i] = AQCSVTable.Load(csv, null, "NumPoints", ref lineCount);
                }
                reader.Close();
            }
            return(ret);
        }
예제 #2
0
파일: AQCSV.cs 프로젝트: yanxuYX/examples
        public static AQCSVTable Load(string csv, string tblName, string countColumnName, ref int lineCount)
        {
            AQCSVTable ret = new AQCSVTable();

            ret.tblName = tblName;
            if (string.IsNullOrEmpty(csv))
            {
                return(ret);
            }
            ret.metaData = new AQCSVMetaData();
            ret.dataSet  = new AQCSVDataSet();
            using (StringReader reader = new StringReader(csv))
            {
                string          line       = null;
                int             curLineCnt = 0;
                int             dataNumber = 0;
                int             dataCount  = 0;
                int             state      = 0; //0, meta header, 1, meta data, 2 data header, 3, data
                List <string[]> dateItems  = new List <string[]>();
                while ((line = reader.ReadLine()) != null)
                {
                    curLineCnt++;
                    if (curLineCnt <= lineCount)
                    {
                        continue;
                    }
                    lineCount = curLineCnt;
                    if (line.Length > 0)
                    {
                        switch (state)
                        {
                        case 0:    //meta header
                        {
                            ret.metaData.headers = CSVUtil.splitCCVLine(line);
                            ret.metaData.columns = ret.metaData.headers.Length;
                            state = 1;
                            break;
                        }

                        case 1:    //meta data
                        {
                            ret.metaData.datas = CSVUtil.splitCCVLine(line);
                            if (!string.IsNullOrEmpty(countColumnName))
                            {
                                dataNumber = int.Parse(ret.metaData[countColumnName]);
                            }
                            state = 2;
                            break;
                        }

                        case 2:    //data header
                        {
                            ret.dataSet.headers = CSVUtil.splitCCVLine(line);
                            ret.dataSet.columns = ret.dataSet.headers.Length;
                            state = 3;
                            break;
                        }

                        case 3:    //data
                        {
                            string[] dataItem = CSVUtil.splitCCVLine(line);
                            dateItems.Add(dataItem);
                            dataCount++;
                            break;
                        }

                        default:
                            break;
                        }
                        if (dataNumber > 0 && dataCount == dataNumber) //move to next
                        {
                            lineCount++;
                            break;
                        }
                    }
                }
                reader.Close();
                ret.dataSet.datas  = dateItems.ToArray();
                ret.dataSet.length = ret.dataSet.datas.Length;
            }

            return(ret);
        }