Ejemplo n.º 1
0
        private bool ExportDataWriteMembersToWbk(ExcelApplicationEx excelApp,
                                                 string wbkFullPath,
                                                 IEnumerable <CFullMemberInfo> data,
                                                 out string message)
        {
            return(RunWbkOperation <bool>(excelApp, wbkFullPath, true, true,
                                          wbk =>
            {
                try
                {
                    var list = data.OrderBy(arg => arg.Surname).ToList();

                    var helper = new StartListWorksheetHelper(wbk);
                    helper.PrepareTable(list.Count);

                    for (int i = 0; i < list.Count; i++)
                    {
                        helper.SetMember(list[i], i);
                    }

                    return new RunWbkActionResult <bool>(true);
                }
                catch (Exception ex)
                {
                    return new RunWbkActionResult <bool>(false, $"exception in ExportDataWriteMembersToWbk: {ex.Message}");
                }
            },
                                          out message));
        }
Ejemplo n.º 2
0
        private bool RunWbkOperation <TResult>(ExcelApplicationEx excelApp,
                                               string wbkFullPath,
                                               bool closeWbkAfterAction,
                                               TResult trueValue,
                                               Func <MSExcel.Workbook, RunWbkActionResult <TResult> > action,
                                               out string message)
            where TResult : IComparable
        {
            message = null;
            try
            {
                using (var wrapper = new DisposableWrapper <MSExcel.Application>(excelApp.App,
                                                                                 app =>
                {
                    if (app != null)
                    {
                        app.DisplayAlerts = true;
                    }
                }))
                {
                    if (excelApp != null)
                    {
                        excelApp.App.DisplayAlerts = false; // Отключаем различные сообщения

                        var wbk = OpenWbk(excelApp, wbkFullPath);
                        if (wbk != null)
                        {
                            var res = action(wbk);
                            if (res.Result.CompareTo(trueValue) != 0)
                            {
                                message = res.ErrorMessage;
                                return(false);
                            }

                            wbk.Save();
                            if (closeWbkAfterAction)
                            {
                                wbk.Close(); // Закрываем книгу, в следующий раз она молчаливо себя почистит
                            }
                            return(true);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                message = $"exception in RunWbkOperation: {ex.Message}";
            }

            return(false);
        }
Ejemplo n.º 3
0
 private bool PrepareTemplateWorkbook(ExcelApplicationEx excelApp, string wbkTemplateFullPath, out string message)
 {
     return(RunWbkOperation <bool>(excelApp, wbkTemplateFullPath, true, true,
                                   wbk =>
     {
         try
         {
             var helper = new SetupWorksheetHelper(wbk);
             string error;
             var result = helper.PrepareSheetToClearWorkbook(out error);
             return new RunWbkActionResult <bool>(result, error);
         }
         catch (Exception ex)
         {
             return new RunWbkActionResult <bool>(false, $"exception in PrepareTemplateWorkbook: {ex.Message}");
         }
     },
                                   out message));
 }
Ejemplo n.º 4
0
        public static MSExcel.Workbook OpenWbk(ExcelApplicationEx excelApp, string wbkFullPath, out bool WbkOpened)
        {
            MSExcel.Workbook result = null;

            WbkOpened = false;

            // Открываем книгу
            lock (DBManagerApp.m_AppSettings.m_SettingsSyncObj)
            {
                if (excelApp.NewAppCreated)
                {   // Без этого книга не открывается
                    excelApp.App.Visible     = true;
                    excelApp.App.WindowState = MSExcel.XlWindowState.xlMinimized;
                }
                foreach (MSExcel.Workbook book in excelApp.App.Workbooks)
                {
                    if (book.FullName == wbkFullPath)
                    {   // Книга уже открыта => используем её
                        result = book;
                        break;
                    }
                }
                if (result == null)
                {
                    result    = excelApp.App.Workbooks.Open(wbkFullPath);
                    WbkOpened = true;
                }
                if (excelApp.NewAppCreated)
                {
                    excelApp.App.Visible     = false;
                    excelApp.App.WindowState = MSExcel.XlWindowState.xlNormal;
                }
            }

            return(result);
        }
Ejemplo n.º 5
0
        private MSExcel.Workbook OpenWbk(ExcelApplicationEx excelApp, string wbkFullPath)
        {
            bool WbkOpened;

            return(OpenWbk(excelApp, wbkFullPath, out WbkOpened));
        }
Ejemplo n.º 6
0
        private bool CreateGroupWbkAndWriteGroupDesc(ExcelApplicationEx excelApp,
                                                     string wbkTemplateFullPath,
                                                     string wbkFullPath,
                                                     ICompDesc compDesc,
                                                     IGroupItem groupDesc,
                                                     out string message)
        {
            message = null;

            if (!File.Exists(wbkTemplateFullPath))
            {
                message = $"error in CreateGroupWbkAndWriteGroupDesc: {wbkTemplateFullPath} is not existed";
                return(false);
            }

            File.Copy(wbkTemplateFullPath, wbkFullPath, true);

            return(RunWbkOperation <bool>(excelApp, wbkFullPath, false, true,
                                          wbk =>
            {
                try
                {
                    #region WorkbookDataFileWrapper

                    var dataFileWrapper = new WorkbookDataFileWrapper(compDesc.DestCompFolder);

                    #endregion

                    #region SetupWorksheetHelper

                    var wshHelper = new SetupWorksheetHelper(dataFileWrapper, wbk);

                    wshHelper.CompName = compDesc.Name;

                    wshHelper.MainJudge = compDesc.MainJudge;
                    wshHelper.MainSecretary = compDesc.MainSecretary;
                    wshHelper.Row6 = compDesc.ShowRow6 ? compDesc.Row6 : null;

                    wshHelper.StartCompDate = groupDesc.StartDate;
                    wshHelper.EndCompDate = groupDesc.EndDate;

                    wshHelper.StartGroupYear = groupDesc.StartYear;
                    wshHelper.EndGroupYear = groupDesc.EndYear;

                    #endregion

                    string errorMessage;
                    if (!dataFileWrapper.Save(out errorMessage))
                    {
                        return new RunWbkActionResult <bool>(false, errorMessage);
                    }

                    #region Заполняем FLAGS

                    var flagsHelper = new WorkbookFlagsWrapper()
                    {
                        Value = wshHelper.FLAGS
                    };

                    flagsHelper.SetFlagsByCompDates(groupDesc.StartDate, groupDesc.EndDate);
                    flagsHelper.SecondColNameType = compDesc.SecondColNameType;
                    flagsHelper.ShowRow6 = compDesc.ShowRow6;

                    lock (DBManagerApp.m_AppSettings.m_SettingsSyncObj)
                    {
                        var availableGroupName = DBManagerApp
                                                 .m_AppSettings
                                                 .m_Settings
                                                 .AvailableGroupNames
                                                 .First(arg => string.Compare(arg.GroupName, groupDesc.Name, true) == 0);
                        flagsHelper.Sex = availableGroupName.Sex;
                        flagsHelper.GroupYearsAreNeeded = availableGroupName.YearsRangeCanBeSet;
                        flagsHelper.GroupIndexValue = availableGroupName.ValueInWbkFlags;
                    }
                    flagsHelper.WorkbookIsOpenedFirstTime = false;

                    wshHelper.FLAGS = flagsHelper.Value;

                    #endregion

                    wshHelper.SaveAllFlags();
                    wbk.Save();
                    wshHelper.SendRequestToFillWbkBasedOnSetupSheet();

                    return new RunWbkActionResult <bool>(true);
                }
                catch (Exception ex)
                {
                    return new RunWbkActionResult <bool>(false, $"exception in CreateGroupWbkAndWriteGroupDesc: {ex.Message}");
                }
            },
                                          out message));
        }