private void OnSheetIsDeactivated() { using (FreezeExcel freeExcel = new FreezeExcel()) { taskPane.Visible = false; } }
public void Clear() { if (!IsDisposed && RenderedRange != null) { using (FreezeExcel freezeExcel = new FreezeExcel(ETKExcel.ExcelApplication.KeepStatusVisible)) { try { IsClearing = true; RenderedRange.Clear(); if (View.TemplateDefinition.Orientation == Orientation.Horizontal) { RenderedRange.EntireColumn.Hidden = false; } else { RenderedRange.EntireRow.Hidden = false; } View.ClearingCell?.Copy(RenderedRange); RowDecorators.Clear(); ClearRenderingData(); } finally { IsClearing = false; } } } }
private void OnSheetIsActivated() { using (FreezeExcel freeExcel = new FreezeExcel()) { taskPane.Visible = true; } }
private void ManageExpander(ExcelRenderer renderer) { using (var freezeExcel = new FreezeExcel(ETKExcel.ExcelApplication.KeepStatusVisible)) { if (renderer.BodyPartRenderer != null && renderer.BodyPartRenderer.RenderedRange != null || renderer.FooterPartRenderer != null && renderer.FooterPartRenderer.RenderedRange != null) { bool carryOn = true; if (renderer.HeaderPartRenderer != null && renderer.HasExpander) { carryOn = renderer.IsExpanded; int toShowHideSize = renderer.RenderedArea.Height - renderer.HeaderPartRenderer.RenderedArea.Height; if (toShowHideSize > 0) { ExcelInterop.Range toShowHide = renderer.RenderedRange.Offset[renderer.HeaderPartRenderer.RenderedArea.Height, Type.Missing]; toShowHide = toShowHide.Resize[toShowHideSize, Type.Missing]; toShowHide.EntireRow.Hidden = !renderer.IsExpanded; // ExcelApplication.ReleaseComObject(toShowHide); toShowHide = null; } } if (carryOn) { foreach (ExcelRenderer nestedRenderer in renderer.NestedRenderer) { ManageExpander(nestedRenderer); } } } } }
public bool OnDataChanged(ExcelInterop.Range target) { bool ret = false; if (!IsDisposed && !IsClearing && contextItems != null) { FreezeExcel freezeExcel = null; try { foreach (ExcelInterop.Range cell in target.Cells) { IBindingContextItem contextItem = null; // Because of the merge cells ... try { contextItem = contextItems[cell.Row - View.FirstOutputCell.Row, cell.Column - View.FirstOutputCell.Column]; } catch { } if (contextItem != null) { object retValue; bool mustUpdate = contextItem.UpdateDataSource(cell.Value2, out retValue); if (mustUpdate) { if (freezeExcel == null) { freezeExcel = new FreezeExcel(ETKExcel.ExcelApplication.KeepStatusVisible); } //if (!object.Equals(cell.Value2, retValue)) cell.Value2 = retValue; } if (!(contextItem is BindingFilterContextItem)) { ret = true; } } } } finally { if (freezeExcel != null) { freezeExcel.Dispose(); } } } return(ret); }
public void ExecuteTopics(IEnumerable <IExcelTestTopic> topics) { Status = "Executing ..."; Action action = new Action(() => { using (FreezeExcel freeExcel_ = new FreezeExcel()) { foreach (IExcelTestTopic topic in topics) { topic.ExecuteTests(); } } }); ETKExcel.ExcelApplication.PostAsynchronousActions(new[] { action }, () => Status = string.Empty); }
public ExcelTestsManager() { IEnumerable <Type> types = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.IsSubclassOf(typeof(ExcelTestTopic))); TestTopics = types.Select(t => Activator.CreateInstance(t, new[] { this }) as IExcelTestTopic) .OrderBy(t => t.Id) .ThenBy(t => t.Description) .ToArray(); using (FreezeExcel freeExcel = new FreezeExcel()) { foreach (IExcelTestTopic topic in TestTopics) { topic.Init(); } } }
/// <summary> /// Bind the template to Excel => RenderView Excel cells based on the datasource currently injected. /// </summary> internal void RenderViewDataOnly() { lock (syncRoot) { if (!IsDisposed && Renderer != null) { if (ETKExcel.ExcelApplication.IsInEditMode()) { throw new COMException("Excel is on Edit mode"); } try { if (Renderer.RenderedRange == null) { RenderView(); } else { using (var freezeExcel = new FreezeExcel(ETKExcel.ExcelApplication.KeepStatusVisible)) { if (BindingContext != null && BindingContext.Body.ElementsToRender != null) { BeforeRendering?.Invoke(true); Renderer.RenderDataOnly(); if (log.GetLogLevel() == LogType.Debug) { log.LogFormat(LogType.Debug, "Sheet '{0}', View '{1}' from '{2}' render data only failed.", ViewSheet.Name, Ident, TemplateDefinition.Name); } AfterRendering?.Invoke(true);; CurrentSelectedCell?.Select(); } } } } catch (Exception ex) { var message = $"Sheet '{ViewSheet.Name}', View '{this.Ident}' from '{TemplateDefinition.Name}' render data only failed."; throw new EtkException(message, ex, false); } } } }
/// <summary> /// Bind the template to Excel => Refresh Excel cells from the datasource currently injected. /// </summary> internal void RenderView() { lock (syncRoot) { if (!IsDisposed && Renderer != null) { if (ETKExcel.ExcelApplication.IsInEditMode()) { throw new COMException("Excel is on Edit mode"); } try { using (var freezeExcel = new FreezeExcel(ETKExcel.ExcelApplication.KeepStatusVisible)) { BeforeRendering?.Invoke(false); // Clear the previous rendering. //////////////////////////////// CurrentSelectedCell = null; currentSelectedRange = null; Renderer.Clear(); Renderer.Render(); ExecuteAutoFit(); if (log.GetLogLevel() == LogType.Debug) { log.LogFormat(LogType.Debug, "Sheet '{0}', View '{1}' from '{2}' rendered.", ViewSheet.Name, this.Ident, TemplateDefinition.Name); } AfterRendering?.Invoke(true); Renderer.AfterRendering(); } } catch (Exception ex) { string message = $"Sheet '{ViewSheet.Name}', View '{this.Ident}' from '{TemplateDefinition.Name}' render failed."; throw new EtkException(message, ex, false); } } } }
public override void ExecuteSearch() { using (var freezeExcel = new FreezeExcel(ETKExcel.ExcelApplication.KeepStatusVisible)) { if (Renderer?.BodyPartRenderer?.RenderedArea == null) { return; } var toShowOrHide = new List <KeyValuePair <ExcelInterop.Range, bool> >(); ExcelInterop.Range firstRange = ViewSheet.Cells[Renderer.BodyPartRenderer.RenderedArea.YPos, Renderer.BodyPartRenderer.RenderedArea.XPos]; ExcelInterop.Range lastRange = ViewSheet.Cells[Renderer.BodyPartRenderer.RenderedArea.YPos + Renderer.BodyPartRenderer.RenderedArea.Height - 1, Renderer.BodyPartRenderer.RenderedArea.XPos + Renderer.BodyPartRenderer.RenderedArea.Width - 1]; ExcelInterop.Range renderedRange = ViewSheet.Range[firstRange, lastRange]; ExcelInterop.Range rowsOrColumns = TemplateDefinition.Orientation == Orientation.Horizontal ? renderedRange.Columns : renderedRange.Cells.Rows; if (string.IsNullOrEmpty(SearchValue)) { foreach (ExcelInterop.Range rowOrColumn in rowsOrColumns) { toShowOrHide.Add(new KeyValuePair <ExcelInterop.Range, bool>(rowOrColumn, false)); } } else { string searchValueUpper = SearchValue.ToUpper(); foreach (ExcelInterop.Range rowOrColumn in rowsOrColumns) { bool toHide = true; foreach (ExcelInterop.Range cell in rowOrColumn.Cells) { string cellText; if (cell.MergeCells) { cellText = cell.MergeArea[1.1].Text; } else { cellText = cell.Text; } if (!string.IsNullOrEmpty(cellText) && cellText.ToUpper().Contains(searchValueUpper)) { toHide = false; break; } } toShowOrHide.Add(new KeyValuePair <ExcelInterop.Range, bool>(rowOrColumn, toHide)); } } foreach (KeyValuePair <ExcelInterop.Range, bool> showOrHide in toShowOrHide) { ExcelInterop.Range cells; if (TemplateDefinition.Orientation == Orientation.Horizontal) { cells = ViewSheet.Columns[showOrHide.Key.Column]; } else { cells = ViewSheet.Rows[showOrHide.Key.Row]; } cells.Hidden = showOrHide.Value; cells = null; } if (string.IsNullOrEmpty(SearchValue)) { ManageExpander(); } firstRange = null; lastRange = null; renderedRange = null; rowsOrColumns = null; } }