Beispiel #1
0
        /// <summary>
        /// Imports multiple series using an excel control file.
        /// the control file has one entry per row(series)
        /// and specifies file format and other details for
        /// the series.
        /// </summary>
        /// <param name="db"></param>
        /// <param name="excelFilename"></param>
        public static void Import(TimeSeriesDatabase db, string excelFilename)
        {
            NpoiExcel xls = new NpoiExcel(excelFilename);

            var tbl = xls.ReadDataTable(0, true, true);

            for (int i = 0; i < tbl.Rows.Count; i++)
            {
                var row        = tbl.Rows[i];
                var format     = ReadString(row, "format");
                var units      = ReadString(row, "units");
                var folderName = ReadString(row, "folder");
                var filename   = ReadString(row, "filename");
                if (!Path.IsPathRooted(filename))
                {
                    string dir = Path.GetDirectoryName(db.DataSource);
                    filename = Path.Combine(dir, filename);
                }
                var siteID    = ReadString(row, "siteid");
                var name      = ReadString(row, "name");
                var sheetName = ReadString(row, "sheet");

                Series s = null;


                if (format == "csv" || format == "txt")
                {
                    s = new TextSeries(filename);
                    s.Read();
                }
//                else if( format == "xls-monthly-wateryear")
//              {
//                throw new NotImplementedException("oops the programmer forgot to finish up some work");
//          }
                else if (format == "xls-daily-yearlysheets")
                {
                    s = ImportMultiSheetDailySeriesExcel.ImportSpreadsheet(filename);
                }

                s.Units           = units;
                s.Name            = name;
                s.SiteID          = siteID;
                s.Table.TableName = "ts_" + s.Name.ToLower();
                var folder = db.RootFolder;
                if (folderName != "")
                {
                    folder = db.GetOrCreateFolder(folder.Name, folderName);
                }

                db.AddSeries(s, folder);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Imports multiple series using an excel control file.
        /// the control file has one entry per row(series)
        /// and specifies file format and other details for
        /// the series.
        /// </summary>
        /// <param name="db"></param>
        /// <param name="excelFilename"></param>
        public static void Import(TimeSeriesDatabase db, string excelFilename)
        {
            NpoiExcel xls = new NpoiExcel(excelFilename);

            var tbl = xls.ReadDataTable(0, true, true);

            for (int i = 0; i < tbl.Rows.Count; i++)
            {
                var row    = tbl.Rows[i];
                var format = ReadString(row, "format");
                var path   = ReadString(row, "path").Split(new char[] { ',', '/', '\\' },
                                                           StringSplitOptions.RemoveEmptyEntries);
                var filename = ReadString(row, "filename");

                var tablename = ReadString(row, "tablename");
                if (filename != "" && !Path.IsPathRooted(filename))
                {
                    string dir = Path.GetDirectoryName(db.DataSource);
                    filename = Path.Combine(dir, filename);
                }


                var sheetName = ReadString(row, "sheet");

                var interval = TimeInterval.Daily;

                var timeinterval = ReadString(row, "timeinterval").ToLower();

                if (timeinterval.IndexOf("instant") >= 0)
                {
                    interval = TimeInterval.Irregular;
                }
                if (timeinterval.IndexOf("month") >= 0)
                {
                    interval = TimeInterval.Monthly;
                }


                Series s = new Series("", interval);
                s.Name       = ReadString(row, "name");
                s.SiteID     = ReadString(row, "siteid");
                s.Units      = ReadString(row, "units");
                s.Notes      = ReadString(row, "notes");
                s.Expression = ReadString(row, "expression");



                if (s.Expression != "")
                {
                    s.Provider = "CalculationSeries";
                }

                if (format == "csv" || format == "txt")
                {
                    if (File.Exists(filename))
                    {
                        s = new TextSeries(filename);
                        s.Read();
                    }
                    else
                    {
                        if (filename.Trim() != "")
                        {
                            Logger.WriteLine("File not found: '" + filename + "'");
                        }
                    }
                }
//                else if( format == "xls-monthly-wateryear")
//              {
//                throw new NotImplementedException("oops the programmer forgot to finish up some work");
//          }
                else if (format == "xls-daily-yearlysheets")
                {
                    s = ImportMultiSheetDailySeriesExcel.ImportSpreadsheet(filename);
                }

                if (tablename != "")
                {
                    s.Table.TableName = tablename;
                }
                else
                {
                    s.Table.TableName = "ts_" + s.Name.ToLower();
                }
                var folder = db.RootFolder;
                if (path.Length > 0)
                {
                    folder = db.GetOrCreateFolder(path);
                }

                int id   = db.AddSeries(s, folder);
                var prop = ReadString(row, "properties").Split(new char[] { ',' },
                                                               StringSplitOptions.RemoveEmptyEntries);

                for (int p = 0; p < prop.Length; p++)
                {
                    var tokens = prop[p].Split(':');

                    if (tokens.Length == 2)
                    {
                        s.Properties.Set(tokens[0], tokens[1]);
                    }
                }
                s.Properties.Save();
            }
        }