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); } }
//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}】"); } }