Example #1
0
        /// <summary>
        /// 获取 CSV 文件字段集合
        /// </summary>
        /// <param name="lineList">行集合</param>
        /// <returns>CSV文件字段集合</returns>
        private static CSVFieldModel GetCSVFieldModel(List <string> lineList)
        {
            var commentsInfoList = new List <string>();
            var csvFieldModel    = new CSVFieldModel();

            //// 寻找文件字段
            foreach (var line in lineList)
            {
                var isSC = StringHelper.IsSingleLineComments(line);

                if (isSC)
                {
                    commentsInfoList.Add(line);
                }
                else
                {
                    var lineIndex           = lineList.IndexOf(line);
                    var next1Line           = lineList[lineIndex + 1];
                    var next2Line           = lineList[lineIndex + 2];
                    var splitLineCount      = line.Split(",").Count();
                    var splitNext1LineCount = next1Line.Split(",").Count();
                    var splitNext2LineCount = next2Line.Split(",").Count();

                    //// 当某一行与后两行通过","分割后的节点数量一致,则认定改行为字段名行
                    if (splitLineCount == splitNext1LineCount && splitLineCount == splitNext2LineCount)
                    {
                        csvFieldModel.FieldLineIndex = lineIndex;
                        var fieldNameList = line.Split(",").ToList();

                        foreach (var name in fieldNameList)
                        {
                            csvFieldModel.CSVFieldList.Add(new FieldModel {
                                FieldName = name, FieldType = typeof(string)
                            });
                        }

                        break;
                    }
                }
            }

            return(csvFieldModel);
        }
Example #2
0
        /// <summary>
        /// 读取指定路径的CSV文件
        /// </summary>
        /// <param name="path"></param>
        public static List <object> ReadCSVFile(string path)
        {
            var resutl           = new List <object>();
            var commentsInfoList = new List <string>();
            var csvFieldModel    = new CSVFieldModel();
            //// 按照行读取指定路径下的 CSV 文件
            var lineList = FileIOHelper.ReadFile(path);

            csvFieldModel = GetCSVFieldModel(lineList);

            if (csvFieldModel.CSVFieldList.Count > 0)
            {
                //// 移除CSV文件中非数据的行
                lineList.RemoveRange(0, csvFieldModel.FieldLineIndex);

                var myObject = ElfinTypeBuilder.CreateNewObject(csvFieldModel.CSVFieldList);

                foreach (var line in lineList)
                {
                    var isSC = StringHelper.IsSingleLineComments(line);

                    if (!isSC)
                    {
                        var dataList = line.Split(",").ToList();

                        for (int i = 0; i < dataList.Count; i++)
                        {
                            myObject.GetType().GetProperty(csvFieldModel.CSVFieldList[i].FieldName).SetValue(myObject, dataList[i]);
                        }

                        resutl.Add(myObject);
                    }
                }
            }

            return(resutl);
        }