public static void AppendSummary(this PowerPointProcessor target, ISummaryControl summary, bool tabelOutput, Presentation destinationPresentation = null) { if (tabelOutput) { summary.PopulateReplacementsList(); target.AppendTableSummary(summary, destinationPresentation); } else { target.AppendSlideSummary(summary, destinationPresentation); } }
public static void PrepareSummaryPdf(this PowerPointProcessor target, string targetFileName, ISummaryControl summary, bool tabelOutput) { var sourceFileName = Path.GetTempFileName(); target.PreparePresentation(sourceFileName, presentation => target.AppendSummary(summary, tabelOutput, presentation)); target.BuildPdf(sourceFileName, targetFileName); }
public static void PrepareSummaryEmail(this PowerPointProcessor target, string fileName, ISummaryControl summary, bool tabelOutput) { target.PreparePresentation(fileName, presentation => target.AppendSummary(summary, tabelOutput, presentation)); }
private static void AppendTableSummary(this PowerPointProcessor target, ISummaryControl summary, Presentation destinationPresentation = null) { try { var thread = new Thread(delegate() { MessageFilter.Register(); var slidesCount = summary.OutputReplacementsLists.Count; for (var k = 0; k < slidesCount; k++) { var presentationTemplatePath = MasterWizardManager.Instance.SelectedWizard.GetSimpleSummaryTableFile(String.Format(MasterWizardManager.SimpleSummaryTableTemplate, summary.ItemsPerTable)); if (!File.Exists(presentationTemplatePath)) { continue; } var presentation = target.PowerPointObject.Presentations.Open(presentationTemplatePath, WithWindow: MsoTriState.msoFalse); foreach (Slide slide in presentation.Slides) { foreach (Shape shape in slide.Shapes) { for (var i = 1; i <= shape.Tags.Count; i++) { switch (shape.Tags.Name(i)) { case "HEADER": shape.TextFrame.TextRange.Text = summary.Title; break; case "SUMMARYDATA": shape.TextFrame.TextRange.Text = summary.SummaryData; break; default: var startIndex = k * summary.ItemsPerTable; for (var j = 0; j < summary.ItemsPerTable; j++) { if (shape.Tags.Name(i).Equals(String.Format("ICON{0}", j + 1))) { if (summary.ShowIcons && (j + startIndex) < summary.ItemsCount && !String.IsNullOrEmpty(summary.TableIcons[j + startIndex])) { var filePath = MasterWizardManager.Instance.SelectedWizard.GetSimpleSummaryIconFile(summary.TableIcons[j + startIndex]); var newShape = slide.Shapes.AddPicture(filePath, MsoTriState.msoFalse, MsoTriState.msoCTrue, shape.Left, shape.Top, shape.Width, shape.Height); newShape.Top = shape.Top; newShape.Left = shape.Left; newShape.Width = shape.Width; newShape.Height = shape.Height; } shape.Visible = MsoTriState.msoFalse; } } break; } } if (shape.HasTable != MsoTriState.msoTrue) { continue; } var table = shape.Table; var tableRowsCount = table.Rows.Count; var tableColumnsCount = table.Columns.Count; for (var i = 1; i <= tableRowsCount; i++) { for (var j = 1; j <= tableColumnsCount; j++) { if (j > table.Columns.Count) { continue; } var tableShape = table.Cell(i, j).Shape; if (tableShape.HasTextFrame != MsoTriState.msoTrue) { continue; } var cellText = tableShape.TextFrame.TextRange.Text.Trim(); if (!cellText.Contains("Product") || summary.ShowIcons) { continue; } var prevColumnIndex = j - 1; if (prevColumnIndex < 1) { continue; } table.Cell(i, j).Merge(table.Cell(i, prevColumnIndex)); } } tableRowsCount = table.Rows.Count; tableColumnsCount = table.Columns.Count; for (var i = 1; i <= tableRowsCount; i++) { for (var j = 1; j <= tableColumnsCount; j++) { var tableShape = table.Cell(i, j).Shape; if (tableShape.HasTextFrame != MsoTriState.msoTrue) { continue; } var cellText = tableShape.TextFrame.TextRange.Text.Trim(); if (!summary.OutputReplacementsLists[k].ContainsKey(cellText)) { continue; } tableShape.TextFrame.TextRange.Text = summary.OutputReplacementsLists[k][cellText]; summary.OutputReplacementsLists[k].Remove(cellText); } } for (var i = tableRowsCount; i >= 1; i--) { var tableShape = table.Cell(i, 1).Shape; if (tableShape.HasTextFrame != MsoTriState.msoTrue) { continue; } var cellText = tableShape.TextFrame.TextRange.Text.Trim(); if (!cellText.Equals("DeleteRow")) { continue; } try { table.Rows[i].Delete(); } catch { shape.Visible = MsoTriState.msoFalse; } } } } var selectedTheme = summary.SelectedTheme; if (selectedTheme != null) { presentation.ApplyTheme(selectedTheme.GetThemePath()); } target.AppendSlide(presentation, -1, destinationPresentation); presentation.Close(); } }); thread.Start(); while (thread.IsAlive) { System.Windows.Forms.Application.DoEvents(); } } catch { } finally { MessageFilter.Revoke(); } }
private static void AppendSlideSummary(this PowerPointProcessor target, ISummaryControl summary, Presentation destinationPresentation = null) { var itemsCount = summary.ItemsCount; var mainFileTemplateIndex = itemsCount >= SummaryConstants.MaxOneSheetItems ? SummaryConstants.MaxOneSheetItems : itemsCount; var additionalFileTemplateIndex = itemsCount > SummaryConstants.MaxOneSheetItems ? itemsCount % SummaryConstants.MaxOneSheetItems : 0; var mainFilesCount = itemsCount / SummaryConstants.MaxOneSheetItems; if (mainFilesCount == 0 && itemsCount > 0) { mainFilesCount++; } try { var thread = new Thread(delegate() { var mainPresentationTemplatePath = MasterWizardManager.Instance.SelectedWizard.GetSimpleSummaryTemlateFile(String.Format(MasterWizardManager.SimpleSummarySlideTemplate, mainFileTemplateIndex)); MessageFilter.Register(); var presentation = target.PowerPointObject.Presentations.Open(mainPresentationTemplatePath, WithWindow: MsoTriState.msoFalse); for (int j = 0; j < (itemsCount - additionalFileTemplateIndex); j += mainFileTemplateIndex) { foreach (Slide slide in presentation.Slides) { foreach (Shape shape in slide.Shapes) { for (int i = 1; i <= shape.Tags.Count; i++) { switch (shape.Tags.Name(i)) { case "HEADER": shape.TextFrame.TextRange.Text = summary.Title; break; case "SUMMARYDATA": shape.TextFrame.TextRange.Text = summary.SummaryData; break; case "MNTHLY1": shape.Visible = summary.ShowMonthlyHeader && summary.ShowTotalHeader ? MsoTriState.msoTrue : MsoTriState.msoFalse; shape.TextFrame.TextRange.Text = String.Format("Monthly{0}Investment", (char)13); break; case "TOTAL2": if ((summary.ShowMonthlyHeader && summary.ShowTotalHeader) || summary.ShowTotalHeader) { shape.TextFrame.TextRange.Text = "Total Investment"; } else if (summary.ShowMonthlyHeader) { shape.TextFrame.TextRange.Text = "Monthly Investment"; } else { shape.Visible = MsoTriState.msoFalse; } break; default: for (int k = 0; k < mainFileTemplateIndex; k++) { if (shape.Tags.Name(i).Equals(string.Format("SHAPE{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.ItemTitles == null) { continue; } if ((j + k) < itemsCount) { if (!string.IsNullOrEmpty(summary.ItemTitles[j + k])) { shape.Visible = MsoTriState.msoTrue; } } } else if (shape.Tags.Name(i).Equals(string.Format("SUBHEADER{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.ItemTitles == null) { continue; } if ((j + k) >= itemsCount) { continue; } shape.TextFrame.TextRange.Text = summary.ItemTitles[j + k]; shape.Visible = MsoTriState.msoTrue; } else if (shape.Tags.Name(i).Equals(string.Format("SELECT{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.ItemDetails == null) { continue; } if ((j + k) >= itemsCount) { continue; } shape.TextFrame.TextRange.Text = summary.ItemDetails[j + k]; shape.Visible = MsoTriState.msoTrue; } else if (shape.Tags.Name(i).Equals(string.Format("TINVEST{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.MonthlyValues == null) { continue; } if ((j + k) >= itemsCount) { continue; } shape.TextFrame.TextRange.Text = summary.MonthlyValues[j + k]; shape.Visible = MsoTriState.msoTrue; } else if (shape.Tags.Name(i).Equals(string.Format("MWINVEST{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.TotalValues == null) { continue; } if ((j + k) >= itemsCount) { continue; } shape.TextFrame.TextRange.Text = summary.TotalValues[j + k]; shape.Visible = MsoTriState.msoTrue; } } break; } } } if (summary.ContractSettings.IsConfigured && summary.ContractTemplateFolder != null && summary.ContractTemplateFolder.ExistsLocal()) { target.FillContractInfo(slide, summary.ContractSettings, summary.ContractTemplateFolder); } } var selectedTheme = summary.SelectedTheme; if (selectedTheme != null) { presentation.ApplyTheme(selectedTheme.GetThemePath()); } target.AppendSlide(presentation, -1, destinationPresentation); } presentation.Close(); }); thread.Start(); while (thread.IsAlive) { System.Windows.Forms.Application.DoEvents(); } } finally { MessageFilter.Revoke(); } if (additionalFileTemplateIndex == 0) { return; } try { var thread = new Thread(delegate() { var additionalPresentationTemplatePath = MasterWizardManager.Instance.SelectedWizard.GetSimpleSummaryTemlateFile(String.Format(MasterWizardManager.SimpleSummarySlideTemplate, (additionalFileTemplateIndex + mainFileTemplateIndex))); MessageFilter.Register(); var presentation = target.PowerPointObject.Presentations.Open(additionalPresentationTemplatePath, WithWindow: MsoTriState.msoFalse); foreach (Slide slide in presentation.Slides) { foreach (Shape shape in slide.Shapes) { for (int i = 1; i <= shape.Tags.Count; i++) { switch (shape.Tags.Name(i)) { case "HEADER": shape.TextFrame.TextRange.Text = summary.Title; break; case "SUMMARYDATA": shape.TextFrame.TextRange.Text = summary.SummaryData; break; case "MNTHLY1": shape.Visible = summary.ShowMonthlyHeader && summary.ShowTotalHeader ? MsoTriState.msoTrue : MsoTriState.msoFalse; shape.TextFrame.TextRange.Text = String.Format("Monthly{0}Investment", (char)13); break; case "TOTAL2": if ((summary.ShowMonthlyHeader && summary.ShowTotalHeader) || summary.ShowTotalHeader) { shape.TextFrame.TextRange.Text = "Total Investment"; } else if (summary.ShowMonthlyHeader) { shape.TextFrame.TextRange.Text = "Monthly Investment"; } else { shape.Visible = MsoTriState.msoFalse; } break; default: int j = mainFileTemplateIndex * mainFilesCount; for (int k = 0; k < additionalFileTemplateIndex; k++) { if (shape.Tags.Name(i).Equals(string.Format("SHAPE{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.ItemTitles == null) { continue; } if ((j + k) < itemsCount) { if (!string.IsNullOrEmpty(summary.ItemTitles[j + k])) { shape.Visible = MsoTriState.msoTrue; } } } else if (shape.Tags.Name(i).Equals(string.Format("SUBHEADER{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.ItemTitles == null) { continue; } if ((j + k) >= itemsCount) { continue; } shape.TextFrame.TextRange.Text = summary.ItemTitles[j + k]; shape.Visible = MsoTriState.msoTrue; } else if (shape.Tags.Name(i).Equals(string.Format("SELECT{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.ItemDetails == null) { continue; } if ((j + k) >= itemsCount) { continue; } shape.TextFrame.TextRange.Text = summary.ItemDetails[j + k]; shape.Visible = MsoTriState.msoTrue; } else if (shape.Tags.Name(i).Equals(string.Format("TINVEST{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.MonthlyValues == null) { continue; } if ((j + k) >= itemsCount) { continue; } shape.TextFrame.TextRange.Text = summary.MonthlyValues[j + k]; shape.Visible = MsoTriState.msoTrue; } else if (shape.Tags.Name(i).Equals(string.Format("MWINVEST{0}", k))) { shape.Visible = MsoTriState.msoFalse; if (summary.TotalValues == null) { continue; } if ((j + k) >= itemsCount) { continue; } shape.TextFrame.TextRange.Text = summary.TotalValues[j + k]; shape.Visible = MsoTriState.msoTrue; } } break; } } } if (summary.ContractSettings.IsConfigured && summary.ContractTemplateFolder != null && summary.ContractTemplateFolder.ExistsLocal()) { target.FillContractInfo(slide, summary.ContractSettings, summary.ContractTemplateFolder); } } var selectedTheme = summary.SelectedTheme; if (selectedTheme != null) { presentation.ApplyTheme(selectedTheme.GetThemePath()); } target.AppendSlide(presentation, -1, destinationPresentation); presentation.Close(); }); thread.Start(); while (thread.IsAlive) { System.Windows.Forms.Application.DoEvents(); } } finally { MessageFilter.Revoke(); } }