Esempio n. 1
0
        public static bool RefreshPivotTable(string path)
        {
            Application _app  = null;
            Workbooks   _wkbs = null;
            Workbook    _wkb  = null;

            try
            {
                _app         = new Application();
                _app.Visible = false;
                _app.Application.ScreenUpdating = false;
                _app.Application.DisplayAlerts  = false;
                LogUtility.WriteInfo($"【透视表】透视表刷新App");
                _wkbs = _app.Workbooks;
                _wkbs.Application.ScreenUpdating = false;
                _wkbs.Application.DisplayAlerts  = false;
                LogUtility.WriteInfo($"【透视表】透视表刷新Workbooks");
                _wkb = _wkbs.Open(path);
                _wkb.Application.ScreenUpdating      = false;
                _wkb.Application.CalculateBeforeSave = false;
                _wkb.Application.DisplayAlerts       = false;

                LogUtility.WriteInfo($"【透视表】透视表刷新开始");
                foreach (Worksheet sheet in _wkb.Worksheets)
                {
                    foreach (PivotTable pivotTable in sheet.PivotTables())
                    {
                        pivotTable.PivotCache().Refresh();

                        //Marshal.ReleaseComObject(pivotTable);
                        LogUtility.WriteInfo($"【透视表】透视表刷新完了{pivotTable.Name}");
                    }
                }
                LogUtility.WriteInfo($"【透视表】透视表刷新结束");
                Thread.Sleep(1000);

                _wkb.Close(SaveChanges: true);
                _wkbs.Close();
                _app.Quit();

                return(true);
            }
            catch (NullReferenceException)
            {
                return(false);
            }
            finally
            {
                Marshal.ReleaseComObject(_wkb);
                Marshal.ReleaseComObject(_wkbs);
                Marshal.ReleaseComObject(_app);
            }
        }
Esempio n. 2
0
        //public void DoEvents(string eve, List<SeleniumEvent> events,ref string continuEvent)
        public void DoEvents(SeleniumScriptModel model)
        {
            foreach (SeleniumOrder item in model.Orders)
            {
                LogUtility.WriteInfo($"【Order开始】-【{item.File}-{item.Case}-{item.Sid}-{item.Back}】");

                // 初期
                _order    = item;
                _elements = new Dictionary <string, IWebElement>();
                _logs     = new List <SeleniumEvent>();
                _id       = 1;
                string goNo = null;

                for (int i = 0; i < model.Events[_order.Sid][_order.Case].Count();)
                {
                    if (FlgStop)
                    {
                        throw new Exception("Stop");
                    }

                    SeleniumEvent temp = model.Events[_order.Sid][_order.Case][i];

                    // Skip
                    if (string.IsNullOrWhiteSpace(temp.Cmd) && string.IsNullOrWhiteSpace(temp.Value))
                    {
                        continue;
                    }

                    SeleniumEvent se = new SeleniumEvent()
                    {
                        No    = temp.No,
                        Id    = temp.Id,
                        Cmd   = temp.Cmd,
                        Value = temp.Value,
                        Range = temp.Range,
                    };

                    // Replace Args
                    if (se.Value.Contains("$"))
                    {
                        model.Args.Keys.ToList().ForEach(k => se.Value = se.Value.Replace(k, model.Args[k]));
                    }

                    // Do Event
                    goNo = DoCommand(model, se);

                    // Add Range
                    if (!string.IsNullOrWhiteSpace(se.Range))
                    {
                        _logs.Add(se);
                    }

                    // Log
                    LogUtility.WriteInfo($"【Event执行成功】-【{se.Id}-{se.Value}】");

                    // Next
                    if (string.IsNullOrWhiteSpace(goNo))
                    {
                        i++;
                    }
                    else
                    {
                        for (int j = 0; j < model.Events[_order.Sid][_order.Case].Count(); j++)
                        {
                            if (goNo == model.Events[_order.Sid][_order.Case][j].No)
                            {
                                i    = j;
                                goNo = null;
                                break;
                            }
                        }
                    }
                }

                LogUtility.WriteInfo($"【Order终了】-【{item.File}-{item.Case}-{item.Sid}-{item.Back}】");
            }
        }