Ejemplo n.º 1
0
        public static List <СвободнаяЯчейка> ПолучитьСвободныеЯчейки(Worksheet лист)
        {
            List <СвободнаяЯчейка> свободныеЯчейки = ПолучитьСвободныеЯчейкиПоУмолчанию();

            Range меткаКодыЯчеек = ПолучитьМеткуИзЛиста(лист);

            if (меткаКодыЯчеек != null)
            {
                Range столбецСКодамиЯчеек = лист.Application.Intersect(меткаКодыЯчеек.EntireColumn, лист.UsedRange);

                if (меткаКодыЯчеек != null)
                {
                    foreach (Range клетка in столбецСКодамиЯчеек)
                    {
                        if (клетка.Row > меткаКодыЯчеек.Row)
                        {
                            if (!ДопМетоды.КлеткаПустаИлиСодержитМетку(клетка))
                            {
                                свободныеЯчейки.Add(new СвободнаяЯчейка(клетка.Value.ToString(), ПолучитьТипЯчейки(клетка)));
                            }

                            if (ДопМетоды.КлеткаПустаИлиСодержитМетку(клетка.Offset[1, 0]))
                            {
                                break;
                            }
                        }
                    }
                }
            }

            return(свободныеЯчейки);
        }
Ejemplo n.º 2
0
        public Столбец(Range клеткаСтрокиСКодамиСтолбцов, bool являетсяКлючевым)
        {
            Console.WriteLine(DateTime.Now + ": столбец " + клеткаСтрокиСКодамиСтолбцов.Value.ToString() + ", начат");

            Идентификатор = клеткаСтрокиСКодамиСтолбцов.Value.ToString();

            Код = клеткаСтрокиСКодамиСтолбцов.Value.ToString();

            НаименованиеЭлемента = ДопМетоды.ПолучитьНаименованиеСтрокиИлиСтолбца(клеткаОбластиСКодами: клеткаСтрокиСКодамиСтолбцов, поискДляСтроки: false);

            Тег = МенеджерНастроек.Настройки.Теги.ПрефиксСтолбца.Value +
                  ДопМетоды.ПолучитьТегПоМетке(клеткаСтрокиСКодамиСтолбцов, false) == "" ?
                  ДопМетоды.ПолучитьТег(Идентификатор) :
                  ДопМетоды.ПолучитьТегПоМетке(клеткаСтрокиСКодамиСтолбцов, false);

            ЯвлетсяКлючевым = являетсяКлючевым;

            ТипСтолбца = ПолучитьТипСтолбца(клеткаСтрокиСКодамиСтолбцов);

            тип = ТипСтолбца.GetType().Name;

            Описание = ДопМетоды.ПолучитьСриализованныйТип(ТипСтолбца);

            Console.WriteLine(DateTime.Now + ": столбец " + клеткаСтрокиСКодамиСтолбцов.Value.ToString() + ", закончен");
        }
Ejemplo n.º 3
0
        private string ПолучитьНаименованиеТаблицы(int порядковыйНомерЛиста)
        {
            if (меткаНаименование != null)
            {
                if (ДопМетоды.ПолучитьНаименованиеПоМетке(меткаНаименование, out string наименование))
                {
                    return(наименование);
                }
            }

            return("Таблица" + порядковыйНомерЛиста);
        }
Ejemplo n.º 4
0
        public СвободнаяЯчейка(string кодЯчейки, object типЯчейки)
        {
            Идентификатор = кодЯчейки;

            Код = кодЯчейки;

            ТипЯчейки = типЯчейки;

            тип = ТипЯчейки.GetType().Name;

            Тег = МенеджерНастроек.Настройки.Теги.ПрефиксСвободнойЯчейки.Value + ДопМетоды.ПолучитьТег(Идентификатор);

            Описание = ДопМетоды.ПолучитьСриализованныйТип(ТипЯчейки);
        }
Ejemplo n.º 5
0
        public Строка(Range клеткаСтолбцаСКодамиСтрок)
        {
            Console.WriteLine(DateTime.Now + ": строка " + клеткаСтолбцаСКодамиСтрок.Value.ToString() + ", начата");

            Идентификатор = клеткаСтолбцаСКодамиСтрок.Value.ToString();

            Код = клеткаСтолбцаСКодамиСтрок.Value.ToString();

            НаименованиеЭлемента = ДопМетоды.ПолучитьНаименованиеСтрокиИлиСтолбца(клеткаСтолбцаСКодамиСтрок, true);

            Тег = МенеджерНастроек.Настройки.Теги.ПрефиксСтроки.Value +
                  ДопМетоды.ПолучитьТегПоМетке(клеткаСтолбцаСКодамиСтрок, true) == "" ?
                  ДопМетоды.ПолучитьТег(Идентификатор) :
                  ДопМетоды.ПолучитьТегПоМетке(клеткаСтолбцаСКодамиСтрок, true);

            Console.WriteLine(DateTime.Now + ": строка " + клеткаСтолбцаСКодамиСтрок.Value.ToString() + ", закончена");
        }
Ejemplo n.º 6
0
        public Таблица(Worksheet листКниги, int порядковыйНомерЛиста)
        {
            ЛистКниги = листКниги;

            НайтиМеткиНаЛисте();

            Строки = ПолучитьСтрокиТаблицы();

            Столбцы = ПолучитьСтолбцыТаблицы();

            Наименование = ПолучитьНаименованиеТаблицы(порядковыйНомерЛиста);

            Идентификатор = "Таблица" + порядковыйНомерЛиста;

            Код = "Таблица" + порядковыйНомерЛиста;

            Тег = МенеджерНастроек.Настройки.Теги.ПрефиксТаблицы.Value + ДопМетоды.ПолучитьТег(Наименование);
        }
Ejemplo n.º 7
0
        private Столбец[] ПолучитьСтолбцыТаблицы()
        {
            if (меткаСтолбцов != null)
            {
                List <Столбец> списокСтолбцов = new List <Столбец>();

                foreach (Range клеткаСтрокиСКодамиСтолбцов in ЛистКниги.Application.Intersect(меткаСтолбцов.EntireRow, ЛистКниги.UsedRange).Cells)
                {
                    if (!ДопМетоды.КлеткаПустаИлиСодержитМетку(клеткаСтрокиСКодамиСтолбцов) &&
                        клеткаСтрокиСКодамиСтолбцов.Column > меткаСтолбцов.Column)
                    {
                        списокСтолбцов.Add(new Столбец(клеткаСтрокиСКодамиСтолбцов, Динамическая));
                    }
                }

                return(списокСтолбцов.ToArray());
            }

            return(null);
        }
Ejemplo n.º 8
0
        private Строка[] ПолучитьСтрокиТаблицы()
        {
            if (меткаКодыСтрок != null)
            {
                List <Строка> списокСтрок = new List <Строка>();

                foreach (Range клеткаСтолбцаСКодамиСтрок in ЛистКниги.Application.Intersect(меткаКодыСтрок.EntireColumn, ЛистКниги.UsedRange).Cells)
                {
                    if (!ДопМетоды.КлеткаПустаИлиСодержитМетку(клеткаСтолбцаСКодамиСтрок) &&
                        клеткаСтолбцаСКодамиСтрок.Row > меткаКодыСтрок.Row)
                    {
                        списокСтрок.Add(new Строка(клеткаСтолбцаСКодамиСтрок));
                    }
                }

                return(списокСтрок.ToArray());
            }

            return(null);
        }
Ejemplo n.º 9
0
        public Мета(Workbook книгаExcel)
        {
            КнигаExcel = книгаExcel;

            НаитиМеткиВКниге();

            Наименование = ПолучитьНаименование();

            Идентификатор += ДопМетоды.УбратьЗапрещенныеСимволы(
                $"{(МенеджерНастроек.Настройки.Мета.ЯвляетсяЗапросом.Value ? "З_" : "М_")}{ДопМетоды.ПолучитьТег(Наименование)}",
                "_",
                убиратьПунктуацию: true);

            Группа += DateTime.Today.Year;

            ДатаНачалаДействия = ДатаНачалаДействия.Replace("0001", DateTime.Today.Year.ToString());

            ДатаОкончанияДействия = ДатаОкончанияДействия.Replace("9999", DateTime.Today.Year.ToString());

            ДатаПоследнегоИзменения = DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss");

            Тег = Идентификатор;
        }
Ejemplo n.º 10
0
 private bool НаименованиеУказаноВШаблоне(out string наименование)
 {
     return(ДопМетоды.ПолучитьНаименованиеПоМетке(МеткаНаименование, out наименование));
 }
Ejemplo n.º 11
0
        private double ПолучитьВероятностьНаименованиеВЯчейке(Range cell)
        {
            double вероятность = 0;

            вероятность +=
                cell.Value.ToString().Length *МенеджерНастроек.Настройки.Вес.Длина.Value;

            вероятность +=
                cell.Row * МенеджерНастроек.Настройки.Вес.НомерСтроки.Value;

            вероятность +=
                cell.Column * МенеджерНастроек.Настройки.Вес.НомерСтолбца.Value;

            вероятность +=
                ПолучитьКоличествоЯчеекВОбъединении(cell) * МенеджерНастроек.Настройки.Вес.КоличествоЯчеекВОбъединеннойЯчейке.Value;

            вероятность +=
                cell.Borders[XlBordersIndex.xlEdgeBottom].LineStyle == (int)XlLineStyle.xlLineStyleNone ?
                0 :
                МенеджерНастроек.Настройки.Вес.ГраницаВнизу.Value;

            вероятность +=
                cell.Borders[XlBordersIndex.xlEdgeTop].LineStyle == (int)XlLineStyle.xlLineStyleNone ?
                0 :
                МенеджерНастроек.Настройки.Вес.ГраницаВверху.Value;

            вероятность +=
                cell.Borders[XlBordersIndex.xlEdgeLeft].LineStyle == (int)XlLineStyle.xlLineStyleNone ?
                0 :
                МенеджерНастроек.Настройки.Вес.ГраницаСлева.Value;

            вероятность +=
                cell.Borders[XlBordersIndex.xlEdgeRight].LineStyle == (int)XlLineStyle.xlLineStyleNone ?
                0 :
                МенеджерНастроек.Настройки.Вес.ГраницаСправа.Value;

            вероятность +=
                cell.HorizontalAlignment == (int)XlHAlign.xlHAlignCenter ?
                0 :
                МенеджерНастроек.Настройки.Вес.ВыравниваниеПоСередине.Value;

            вероятность +=
                cell.HorizontalAlignment == (int)XlHAlign.xlHAlignLeft ?
                0 :
                МенеджерНастроек.Настройки.Вес.ВыравниваниеСлева.Value;

            вероятность +=
                cell.HorizontalAlignment == (int)XlHAlign.xlHAlignRight ?
                0 :
                МенеджерНастроек.Настройки.Вес.ВыравниваниеСправа.Value;

            вероятность +=
                cell.Font.Bold ?
                МенеджерНастроек.Настройки.Вес.ЖирностьТекста.Value :
                0;

            вероятность +=
                ПолучитьКоличествоПустыхСтрокПодЯчейкой(cell) * МенеджерНастроек.Настройки.Вес.ПустаяСтрокаПодЯчейкой.Value;

            вероятность +=
                ДопМетоды.СтрокаЯвлетсяЧастоИспользуемой(cell.Value.ToString()) ?
                МенеджерНастроек.Настройки.Вес.ЧастоИспользуемыйТермин.Value :
                0;

            return(вероятность);
        }
Ejemplo n.º 12
0
 private static object ПолучитьТипЯчейки(Range клеткаСтолбцаСКодамиЯчеек)
 {
     return(ДопМетоды.ПолучитьТип(клеткаСтолбцаСКодамиЯчеек.Offset[0, 1].NumberFormat, false));
 }
Ejemplo n.º 13
0
 private object ПолучитьТипСтолбца(Range клеткаСтрокиСКодамиСтолбцов)
 {
     return(ДопМетоды.ПолучитьТип(клеткаСтрокиСКодамиСтолбцов.Offset[1, 0].NumberFormat, ЯвлетсяКлючевым));
 }