Ejemplo n.º 1
0
        public List <GISRecord> Read(string fileName)
        {
            var rslts = new List <GISRecord>();

            //Create COM Objects. Create a COM object for everything that is referenced
            Excel.Application xlApp      = new Excel.Application();
            Excel.Workbook    xlWorkbook = xlApp.Workbooks.Open(fileName);
            var numberOfSheets           = xlWorkbook.Worksheets.Count;

            for (int s = 1; s <= numberOfSheets; s++)
            {
                Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[s];
                var         sheetName        = xlWorksheet.Name;
                Excel.Range xlRange          = xlWorksheet.UsedRange;
                var         numberofcolumns  = xlRange.Columns.Count;
                var         numberofRowss    = xlRange.Rows.Count;
                for (int r = 2; r <= numberofRowss; r++)
                {
                    var newRecord = new GISRecord();
                    newRecord.Source = sheetName;
                    for (int c = 1; c <= numberofcolumns; c++)
                    {
                        var key   = xlRange.Cells[1, c].Text;
                        var value = xlRange.Cells[r, c].Text;
                        newRecord.Information[key] = value;
                        if (key == "Latitude")
                        {
                            double lat;
                            if (double.TryParse(value, out lat))
                            {
                                newRecord.Location.Lat = lat;
                            }
                        }
                        if (key == "Longitude")
                        {
                            double lng;
                            if (double.TryParse(value, out lng))
                            {
                                newRecord.Location.Lng = lng;
                            }
                        }
                    }
                    rslts.Add(newRecord);
                }
            }
            //foreach (var item in xlRange.Columns)
            //{
            //    Console.WriteLine(item.ToString());
            //}
            return(rslts);
        }
Ejemplo n.º 2
0
        public List <GISRecord> Read(string filename, string source)
        {
            var rslts = new List <GISRecord>();

            using (TextFieldParser parser = new TextFieldParser(filename))
            {
                parser.TextFieldType = FieldType.Delimited;
                parser.SetDelimiters(",");
                string[] headers     = parser.ReadFields();
                char[]   charsToTrim = { '*', '#', '\'', ' ', '+', '\"' };
                while (!parser.EndOfData)
                {
                    //Processing row
                    var newRecord = new GISRecord();
                    newRecord.Source = source;
                    string[] fields = parser.ReadFields();
                    for (int i = 0; i < fields.Count(); i++)
                    {
                        newRecord.Information[headers[i]] = fields[i].Contains(",") ? "\"" + fields[i] + "\"" : fields[i];
                        if (headers[i] == "Latitude")
                        {
                            double lat;
                            if (double.TryParse(fields[i], out lat))
                            {
                                newRecord.Location.Lat = lat;
                            }
                        }
                        if (headers[i] == "Longitude")
                        {
                            double lng;
                            if (double.TryParse(fields[i], out lng))
                            {
                                newRecord.Location.Lng = lng;
                            }
                        }
                        if (headers[i] == "BUS-NO" || headers[i] == "busnum") //wecc || energyanalyics from wecc?
                        {
                            newRecord.BusNumber = fields[i];
                        }
                        if (headers[i] == "NAME" || headers[i] == "Name") //wecc || energyanalyics
                        {
                            var trimmedName = fields[i].ToLower().Trim(charsToTrim).Replace('_', ' ');
                            if (trimmedName.EndsWith(" (tap)"))
                            {
                                trimmedName = trimmedName.Substring(0, trimmedName.LastIndexOf(" (tap)"));
                            }
                            if (trimmedName.EndsWith(" tp"))
                            {
                                trimmedName = trimmedName.Substring(0, trimmedName.LastIndexOf(" tp"));
                            }
                            newRecord.BusName = trimmedName.Contains(",") ? "\"" + trimmedName + "\"" : trimmedName;
                            newRecord.Information["Trimmed Bus Name"] = newRecord.BusName;
                        }
                        if (headers[i] == "SUBSTATION NUMBER" || headers[i] == "busnum") //wecc || energyanalyics from wecc?
                        {
                            newRecord.SubstationNumber = fields[i];
                        }
                        if (headers[i] == "SUBSTATION NAME" || headers[i] == "SUB_NAME") //wecc || Platts
                        {
                            var trimmedName = fields[i].ToLower().Trim(charsToTrim).Replace('_', ' ');
                            if (trimmedName.EndsWith(" (tap)"))
                            {
                                trimmedName = trimmedName.Substring(0, trimmedName.LastIndexOf(" (tap)"));
                            }
                            if (trimmedName.EndsWith(" tp"))
                            {
                                trimmedName = trimmedName.Substring(0, trimmedName.LastIndexOf(" tp"));
                            }
                            newRecord.SubstationName = trimmedName.Contains(",") ? "\"" + trimmedName + "\"" : trimmedName;
                            newRecord.Information["Trimmed Substation Name"] = newRecord.SubstationName;
                        }
                    }
                    rslts.Add(newRecord);
                }
            }
            return(rslts);
        }