コード例 #1
0
        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));
        }
コード例 #2
0
        /// <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);
            }
        }
コード例 #3
0
        /// <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);
        }