internal string GetKadr(long time_ms, int MFINumber) { KadrInterval k = new KadrInterval(); k = Intervals.Where(I => ((I.Time_ms_beg <= time_ms) && (I.Time_ms_end > time_ms))).FirstOrDefault(); if (k == null) { throw new Exception("Время " + time_ms + " отсутствует в таблице разбивки кадров по времени - KFile.xml"); } return(k.GetKadrOnMFI(MFINumber)); }
/// <summary> /// Создание KFile (раньше не делал) из excel. /// </summary> internal virtual void CreateKFilesTest() { List <KadrIntervals> KadrIntervalsList = this.KadrIntervalsReadFromExcel(@"c:\_\1\testK.xlsx"); foreach (var KadrIntervals in KadrIntervalsList) { string Header = "FileID = " + KadrIntervals.Id + "\t"; foreach (var tag in KadrIntervals.tags) { Header += tag + "\t"; } KadrInterval.AppendWriteResult(@"c:\_\1\KFile.txt", KadrIntervals.Intervals, Header); } }
/// <summary> /// Считывание разбивки на режимы (используется для формирования R-file) из xlsx файла формата 9.41-сц2 /// </summary> /// <param name="filename"></param> /// <returns></returns> public override List <KadrIntervals> KadrIntervalsReadFromExcel(string filename) { //считываем данные из Excel файла в двумерный массив Excel.Application xlApp = new Excel.Application(); //Excel Excel.Workbook xlWB; //рабочая книга Excel.Worksheet xlSht; //лист Excel xlWB = xlApp.Workbooks.Open(filename); //название файла Excel int NShts = xlWB.Worksheets.Count; List <KadrIntervals> KadrIntervalsList = new List <KadrIntervals>(); try { foreach (Excel.Worksheet sheet in xlWB.Worksheets) { int iLastRow = sheet.Cells[sheet.Rows.Count, "A"].End[Excel.XlDirection.xlUp].Row; var arrData = (object[, ])sheet.Range["A5:H" + iLastRow].Value; //берём данные с листа Excel KadrIntervals kadrIntervals = new KadrIntervals(); List <KadrInterval> intervals = new List <KadrInterval>(); //заполняем intervals данными из массива int i; for (i = 1; i <= arrData.GetUpperBound(0); i++) { double t = (double)arrData[i, 1] * 3_600_000 * 24; long tbeg = (long)t; double te = t + 3_600_000 * 24; if (i != arrData.GetUpperBound(0)) { te = (double)arrData[i + 1, 1] * 3_600_000 * 24; } long tend = (long)te; string[] kadrs = new string[arrData.GetUpperBound(1) - 1]; int j; for (j = 2; j <= arrData.GetUpperBound(1); j++) { kadrs[j - 2] = (string)arrData[i, j]; } KadrInterval I = new KadrInterval(kadrs, tbeg, tend); intervals.Add(I); } kadrIntervals.Intervals = intervals; kadrIntervals.Id = sheet.Cells[2, "H"].Value.ToString(); kadrIntervals.tags = new List <string>(); var arrDataTags = (object[, ])sheet.Range["A2:H2"].Value; for (i = 1; i <= 8; i++) { if (arrDataTags[1, i] != null) { kadrIntervals.tags.Add(arrDataTags[1, i].ToString()); } } kadrIntervals.filename = "NONE!"; KadrIntervalsList.Add(kadrIntervals); } } catch (Exception e) { MessageBox.Show("SpecialFor9_41_SCENARY4.KadrIntervalsReadFromExcel - Ошибка считывания файла " + filename + " : " + e.Message + " Stacktrace:" + e.StackTrace); } finally { xlWB.Close(false); //закрываем книгу, изменения не сохраняем xlApp.Quit(); //закрываем Excel } return(KadrIntervalsList); }