예제 #1
0
 /// <summary>
 /// Информация о группе в таблице.
 /// </summary>
 void SetGroupInfo(ExcelWorksheet worksheet, int row, int i6, KeyValuePair <Group, StudentsCount> keyValuePair)
 {
     worksheet.Cells[3 + row, 2 + i6].SetValueWithBold(keyValuePair.Key.Name);                        //Название
     worksheet.Cells[3 + row, 3 + i6].SetValue(SPOHelper.GetStrSpo(keyValuePair.Key.SpoNpo));         //СПО/НПО
     worksheet.Cells[3 + row, 4 + i6].SetValue(BudgetHelper.GetStrBudget(keyValuePair.Key.IsBudget)); //Б/К
     worksheet.Cells[3 + row, 5 + i6].SetValue(keyValuePair.Value.Total);                             //Кол-во
     worksheet.Cells[3 + row, 6 + i6].SetValue(keyValuePair.Value.OnSabbatical);                      //Ак. отп.
 }
        public async Task <IEnumerable <Group> > Import()
        {
            if (!SelectFile())
            {
                return(null);
            }

            try
            {
                using (var excel = new ExcelPackage(new FileInfo(FileName)))
                {
                    var worksheet = excel.Workbook.Worksheets[1];


                    var groups = new List <Group>();


                    var res = await client.Staff.GetOrCreateFirstStaffAsync();

                    if (!res)
                    {
                        return(Enumerable.Empty <Group>());
                    }
                    int curator = res.Response.Id;

                    for (int i = 0; i < 3; i++)
                    {
                        int i6 = i * 6;

                        int row = 0;
                        while (true)
                        {
                            int    currentRow = 3 + row;
                            string name       = worksheet.Cells[currentRow, 2 + i6].GetValue <string>() ?? "";


                            if (!name.IsMatch("^[а-z-Z]{1,3}-[0-9]{2}$"))
                            {
                                break;
                            }

                            var group = new Group
                            {
                                Name      = name,
                                SpoNpo    = SPOHelper.GetIntSpo(worksheet.Cells[currentRow, 3 + i6].GetValue <string>()),
                                IsBudget  = BudgetHelper.GetBoolBudget(worksheet.Cells[currentRow, 4 + i6].GetValue <string>()),
                                Division  = i,
                                End       = DateTime.Now,
                                Start     = DateTime.Now,
                                Specialty = "Специальность",
                                CuratorId = curator
                            };
                            groups.Add(group);
                            row++;
                        }
                    }

                    Logger.Log.Info($"输入定额数据: {{fileName: {FileName}}}");

                    return(groups);
                }
            }
            catch (Exception ex)
            {
                Logger.Log.Error($"输入定额数据: {{fileName: {FileName}}}", ex);

                return(null);
            }
        }
예제 #3
0
        /// <summary>
        /// Импорт данных о групах.
        /// </summary>
        public async Task <IEnumerable <Group> > Import()
        {
            if (!SelectFile())
            {
                return(null);
            }

            try
            {
                using (var excel = new ExcelPackage(new FileInfo(FileName)))
                {
                    var worksheet = excel.Workbook.Worksheets[1];

                    //список групп
                    var groups = new List <Group>();

                    //первый сотрудник из базы, если нет - создается новый "Иванов Иван Иванович"
                    var res = await client.Staff.GetOrCreateFirstStaffAsync();

                    if (!res)
                    {
                        return(Enumerable.Empty <Group>());
                    }
                    int curator = res.Response.Id;

                    for (int i = 0; i < 3; i++)
                    {
                        int i6 = i * 6;

                        int row = 0; //строка
                        while (true)
                        {
                            int    currentRow = 3 + row;                                                       //текущая строка
                            string name       = worksheet.Cells[currentRow, 2 + i6].GetValue <string>() ?? ""; //название группы

                            //проверка регулярным выражением, формата: А-11, АА-11, ААА-11
                            if (!name.IsMatch("^[а-яА-Я]{1,3}-[0-9]{2}$"))
                            {
                                break;
                            }

                            var group = new Group
                            {
                                Name      = name,
                                SpoNpo    = SPOHelper.GetIntSpo(worksheet.Cells[currentRow, 3 + i6].GetValue <string>()),        //СПО/НПО/ОВЗ -> int
                                IsBudget  = BudgetHelper.GetBoolBudget(worksheet.Cells[currentRow, 4 + i6].GetValue <string>()), //Б/К -> int
                                Division  = i,
                                End       = DateTime.Now,
                                Start     = DateTime.Now,
                                Specialty = "Специальность",
                                CuratorId = curator
                            };
                            groups.Add(group);
                            row++;
                        }
                    }

                    Logger.Log.Info($"Импорт данных о контингенте: {{fileName: {FileName}}}");

                    return(groups);
                }
            }
            catch (Exception ex)
            {
                Logger.Log.Error($"Импорт данных о контингенте: {{fileName: {FileName}}}", ex);

                return(null);
            }
        }