예제 #1
0
        /// <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);
        }
예제 #2
0
        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();
        }
예제 #3
0
        /// <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);
        }