/// <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); } }
/// <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(); } }