/// <summary> /// Считывание разбивки на режимы (используется для формирования R-file) из xlsx файла формата 9.41-сц2 /// </summary> /// <param name="filename"></param> /// <returns></returns> public virtual List <SeparatorIntervals> SeparatorIntervalsReadFromExcel(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 <SeparatorIntervals> SeparatorIntervalsList = new List <SeparatorIntervals>(); // xlSht = xlWB.Worksheets[1]; //название листа или 1-й лист в книге xlSht = xlWB.Worksheets[1]; 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:B" + iLastRow].Value; //берём данные с листа Excel SeparatorIntervals separatorIntervals = new SeparatorIntervals(); List <Interval> intervals = new List <Interval>(); //заполняем 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 = (double)arrData[i + 1, 1] * 3_600_000 * 24; long tend = (long)te; Interval I = new Interval( ((string)arrData[i, 2]).Trim(), tbeg, tend); intervals.Add(I); } separatorIntervals.Intervals = intervals; separatorIntervals.Id = sheet.Cells[2, "I"].Value.ToString(); separatorIntervals.tags = new List <string>(); var arrDataTags = (object[, ])sheet.Range["A2:I2"].Value; for (i = 1; i <= 9; i++) { if (arrDataTags[1, i] != null) { separatorIntervals.tags.Add(arrDataTags[1, i].ToString()); } } separatorIntervals.filename = "NONE!"; SeparatorIntervalsList.Add(separatorIntervals); } xlWB.Close(false); //закрываем книгу, изменения не сохраняем xlApp.Quit(); //закрываем Excel return(SeparatorIntervalsList); }
private static void ParseInDirectory_OneRegFile(string dir, string file_csv, string file_k, string file_r, string tab2File, int NZones, string kadrDefault = "", string tab2FileLastColumn = "T") { TobiiCsvReader tobiiCsvReader = new TobiiCsvReader(); List <TobiiRecord> tobiiRecords = new List <TobiiRecord>(); tobiiCsvReader.TobiiCSCRead(file_csv, tobiiRecords, NZones); List <TobiiRecord> FiltredTobiiList = tobiiCsvReader.CompactTobiiRecords(tobiiRecords); TabOfKeys tabOfKeys = ExcelReader.ReadTabOfKeys(tab2File, tab2FileLastColumn); Regex regex = new Regex(@"id\d{3}"); MatchCollection matches = regex.Matches(Path.GetFileName(file_csv)); if (matches.Count > 1 || matches.Count == 0) { MessageBox.Show("В имени файла " + file_csv + " найдено неверное кол-во id (0 или более 1)"); return; } string FileId = matches[0].Value.Replace("id", ""); KadrIntervals kadrIntervals; kadrIntervals = SpecialFor9_41_SCENARY2.GetKadrIntervalsInXmlKFile(file_k, FileId); FZoneTab fZoneTab = new FZoneTab(); List <TobiiRecord> FZoneList = fZoneTab.Calculate(FiltredTobiiList, kadrIntervals, tabOfKeys); FZoneList = tobiiCsvReader.ClearFromGarbageZone(FZoneList, -1, FixationAddition); FZoneList = tobiiCsvReader.CompactTobiiRecords(FZoneList, "FZones"); fZoneTab.WriteResult(file_csv.Replace(".csv", ".txt"), FZoneList); SeparatorIntervals separatorIntervals = SpecialFor9_41_SCENARY2.GetSeparatorIntervalsInXmlKFile(file_r, FileId); ResultSeparator resultSeparator = new ResultSeparator(dir + @"\reg\", separatorIntervals.Intervals, FZoneList, Path.GetFileName(file_csv).Replace(".csv", "_")); resultSeparator.Separate(); }
/// <summary> /// Считывание разбивки на режимы (используется для формирования R-file) из xlsx файла формата 9.41-сц2 /// </summary> /// <param name="filename"></param> /// <returns></returns> public override List <SeparatorIntervals> SeparatorIntervalsReadFromExcel(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 <SeparatorIntervals> SeparatorIntervalsList = new List <SeparatorIntervals>(); // xlSht = xlWB.Worksheets[1]; //название листа или 1-й лист в книге xlSht = xlWB.Worksheets[1]; try { foreach (Excel.Worksheet sheet in xlWB.Worksheets) { SeparatorIntervals separatorIntervals = new SeparatorIntervals(); List <Interval> intervals = new List <Interval>(); int i; separatorIntervals.Intervals = intervals; separatorIntervals.Id = sheet.Cells[2, "H"].Value.ToString(); separatorIntervals.tags = new List <string>(); var arrDataTags = (object[, ])sheet.Range["A2:H2"].Value; for (i = 1; i <= 8; i++) { if (arrDataTags[1, i] != null) { separatorIntervals.tags.Add(arrDataTags[1, i].ToString()); } } separatorIntervals.filename = "NONE!"; int iLastRow = sheet.Cells[sheet.Rows.Count, "A"].End[Excel.XlDirection.xlUp].Row; var arrData = (object[, ])sheet.Range["A5:C" + iLastRow].Value; //берём данные с листа Excel //заполняем intervals данными из массива for (i = 1; i <= arrData.GetUpperBound(0); i++) { double t = (double)arrData[i, 1] * 3_600_000 * 24; long tbeg = (long)t; double te = (double)arrData[i, 2] * 3_600_000 * 24; long tend = (long)te; Interval I = new Interval( ((string)arrData[i, 3]).Trim(), tbeg, tend); intervals.Add(I); } SeparatorIntervalsList.Add(separatorIntervals); } } catch (Exception e) { MessageBox.Show("SpecialFor9_41_SCENARY4.SeparatorIntervalsReadFromExcel. Ошибка считывания файла " + filename + ": " + e.Message + " Stacktrace:" + e.StackTrace); } finally { xlWB.Close(false); //закрываем книгу, изменения не сохраняем xlApp.Quit(); //закрываем Excel } return(SeparatorIntervalsList); }