public ActionResult viewPRExcel() { ModelState.Clear(); var viewModel = new PRViewModel { //allCoEs = db.CoEs.ToList(), allCoEs = db.CoEs.ToList(), allMaps = db.Indicator_CoE_Maps.ToList(), allFootnoteMaps = db.Indicator_Footnote_Maps.ToList() }; // Create the workbook var wb = new XLWorkbook(); var swPRName = "PR"; var swDefName = "Definitions"; var wsPR = wb.Worksheets.Add(swPRName); var wsDef = wb.Worksheets.Add(swDefName); List<IXLWorksheet> wsList = new List<IXLWorksheet>(); wsList.Add(wsPR); wsList.Add(wsDef); var prBlue = XLColor.FromArgb(0, 51, 102); var prGreen = XLColor.FromArgb(0,118,53); var prYellow = XLColor.FromArgb(255,192,0); var prRed = XLColor.FromArgb(255,0,0); var prHeader1Fill = prBlue; var prHeader1Font = XLColor.White; var prHeader2Fill = XLColor.White; var prHeader2Font = XLColor.Black; var prBorder = XLColor.FromArgb(0, 0, 0); var prAreaFill = XLColor.FromArgb(192, 192, 192); var prAreaFont = XLColor.Black; var prBorderWidth = XLBorderStyleValues.Thin; var prFontSize = 10; var prTitleFont = 20; var prFootnoteSize = 8; var prHeighSeperator = 7.5; var prNumberWidth = 4; var prIndicatorWidth = 50; var prValueWidth = 10; var prFootnoteCharsNewLine = 125; foreach (var ws in wsList) { var currentRow = 1; int startRow; foreach (var coe in viewModel.allCoEs.Where(x => x.CoE_ID == 20)) { string[,] columnHeaders = new string[,]{ {"Number",""}, {"Indicator",""}, {"FY_10_11",""}, {"FY_11_12",""}, {"FY_12_13",""}, {"FY 13 14 Performance","FY_13_14_Q1"}, {"FY 13 14 Performance","FY_13_14_Q2"}, {"FY 13 14 Performance","FY_13_14_Q3"}, {"FY 13 14 Performance","FY_13_14_Q4"}, {"FY 13 14 Performance","FY_13_14_YTD"}, {"Target",""}, {"Performance_Threshold",""}, {"Comparator",""} }; var currentCol = 1; var prHeader2ColStart = 99; var prHeader2ColEnd = 1; int maxCol = columnHeaders.GetUpperBound(0) + 1; var prTitle = ws.Cell(currentRow, 1); prTitle.Value = coe.CoE; prTitle.Style.Font.FontSize = prTitleFont; prTitle.Style.Font.Bold = true; prTitle.Style.Font.FontColor = prHeader1Font; prTitle.Style.Fill.BackgroundColor = prHeader1Fill; ws.Range(ws.Cell(currentRow, 1), ws.Cell(currentRow, maxCol)).Merge(); ws.Range(ws.Cell(currentRow + 1, 1), ws.Cell(currentRow + 1, maxCol)).Merge(); ws.Row(currentRow + 1).Height = prHeighSeperator; currentRow += 2; startRow = currentRow; for (int i = 0; i <= columnHeaders.GetUpperBound(0); i++) { if (columnHeaders[i, 1] == "") { var columnField = columnHeaders[i, 0]; string cellValue; Type t = typeof(Indicators); cellValue = t.GetProperty(columnField) != null ? ModelMetadataProviders.Current.GetMetadataForProperty(null, typeof(Indicators), columnField).DisplayName : ModelMetadataProviders.Current.GetMetadataForProperty(null, typeof(Indicator_CoE_Maps), columnField).DisplayName; ws.Cell(currentRow, currentCol).Value = cellValue; ws.Range(ws.Cell(currentRow, currentCol), ws.Cell(currentRow + 1, currentCol)).Merge(); currentCol++; } else { var columnField = columnHeaders[i, 1]; var columnFieldTop = columnHeaders[i, 0]; ws.Cell(currentRow + 1, currentCol).Value = ModelMetadataProviders.Current.GetMetadataForProperty(null, typeof(Indicators), columnField).DisplayName; ws.Cell(currentRow, currentCol).Value = columnFieldTop; if (currentCol < prHeader2ColStart) { prHeader2ColStart = currentCol; } if (currentCol > prHeader2ColEnd) { prHeader2ColEnd = currentCol; } currentCol++; } } currentCol--; ws.Range(ws.Cell(currentRow, prHeader2ColStart).Address, ws.Cell(currentRow, prHeader2ColEnd).Address).Merge(); var prHeader1 = ws.Range(ws.Cell(currentRow, 1).Address, ws.Cell(currentRow + 1, currentCol).Address); var prHeader2 = ws.Range(ws.Cell(currentRow + 1, prHeader2ColStart).Address, ws.Cell(currentRow + 1, prHeader2ColEnd).Address); prHeader1.Style.Alignment.Vertical = XLAlignmentVerticalValues.Center; prHeader1.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center; prHeader1.Style.Fill.BackgroundColor = prHeader1Fill; prHeader1.Style.Font.FontColor = prHeader1Font; prHeader2.Style.Fill.BackgroundColor = prHeader2Fill; prHeader2.Style.Font.FontColor = prHeader2Font; currentRow += 2; List<Footnotes> footnotes = new List<Footnotes>(); foreach (var areaMap in coe.Area_CoE_Map) { var prArea = ws.Range(ws.Cell(currentRow, 1), ws.Cell(currentRow, maxCol)); prArea.Merge(); prArea.Style.Fill.BackgroundColor = prAreaFill; prArea.Style.Font.FontColor = prAreaFont; prArea.Value = areaMap.Area.Area; currentRow++; foreach (var map in viewModel.allMaps.Where(e => e.Indicator.Area.Equals(areaMap.Area)).Where(d => d.CoE.CoE.Contains(coe.CoE)).OrderBy(f => f.Number)) { currentCol = 1; ws.Cell(currentRow, currentCol).Value = map.Number; ws.Cell(currentRow, currentCol).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center; currentCol++; int j = 0; ws.Cell(currentRow, currentCol).Value = map.Indicator.Indicator; foreach (var footnote in map.Indicator.Indicator_Footnote_Map.Where(e => e.Indicator_ID == map.Indicator_ID).OrderBy(e => e.Indicator_ID)) { if (!footnotes.Contains(footnote.Footnote)) { footnotes.Add(footnote.Footnote); } if (j != 0) { ws.Cell(currentRow, currentCol).RichText.AddText(",").VerticalAlignment = XLFontVerticalTextAlignmentValues.Superscript; } ws.Cell(currentRow, currentCol).RichText.AddText(footnote.Footnote_ID).VerticalAlignment = XLFontVerticalTextAlignmentValues.Superscript; j++; } ws.Cell(currentRow, currentCol).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left; currentCol++; string[,] columnIndicators = new string[,]{ {map.Indicator.FY_10_11, map.Indicator.FY_10_11_Sup,""}, {map.Indicator.FY_11_12, map.Indicator.FY_11_12_Sup,""}, {map.Indicator.FY_12_13, map.Indicator.FY_12_13_Sup,""}, {map.Indicator.FY_13_14_Q1, map.Indicator.FY_13_14_Q1_Sup,map.Indicator.Q1_Color,}, {map.Indicator.FY_13_14_Q2, map.Indicator.FY_13_14_Q2_Sup,map.Indicator.Q2_Color,}, {map.Indicator.FY_13_14_Q3, map.Indicator.FY_13_14_Q3_Sup,map.Indicator.Q3_Color,}, {map.Indicator.FY_13_14_Q4, map.Indicator.FY_13_14_Q4_Sup,map.Indicator.Q4_Color,}, {map.Indicator.FY_13_14_YTD, map.Indicator.FY_13_14_YTD_Sup,map.Indicator.YTD_Color,}, {map.Indicator.Target, map.Indicator.Target_Sup,""}, {map.Indicator.Performance_Threshold, map.Indicator.Performance_Threshold_Sup,""}, {map.Indicator.Comparator, map.Indicator.Comparator_Sup,""}, }; var startCol = currentCol; int k = 1; for (var i = 0; i <= columnIndicators.GetUpperBound(0); i++) { for (j = 0; j <= columnIndicators.GetUpperBound(1); j++) { if (columnIndicators[i, j] != null) { columnIndicators[i, j] = columnIndicators[i, j].Replace("<b>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("</b>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("<u>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("</u>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("<i>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("</i>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("<sup>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("</sup>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("<sub>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("</sub>", ""); } } if (i != columnIndicators.GetUpperBound(0) && columnIndicators[i, 0] == "=") { k = 1; while (columnIndicators[i + k, 0] == "=") { k++; } ws.Range(ws.Cell(currentRow, startCol + i - 1), ws.Cell(currentRow, startCol + i + k - 1)).Merge(); i += k - 1; k = 1; } else if (columnIndicators[i, 0] != "=") { var cell = ws.Cell(currentRow, currentCol + i); string cellValue = ""; if (columnIndicators[i, 0] != null) { cellValue = columnIndicators[i, 0].ToString(); } if (cellValue.Contains("$")) { cell.Style.NumberFormat.Format = "_-$* #,##0_-;-$* #,##0_-;_-$* \" - \"??_-;_-@_-"; } cell.Value = "'" + cellValue; if (columnIndicators[i, 1] != null) { cell.RichText.AddText(columnIndicators[i, 1]).VerticalAlignment = XLFontVerticalTextAlignmentValues.Superscript; } switch (columnIndicators[i, 2]) { case "cssWhite": cell.RichText.SetFontColor(XLColor.Black); cell.Style.Fill.BackgroundColor = XLColor.White; break; case "cssGreen": cell.RichText.SetFontColor(XLColor.White); cell.Style.Fill.BackgroundColor = prGreen; break; case "cssYellow": cell.RichText.SetFontColor(XLColor.Black); cell.Style.Fill.BackgroundColor = prYellow; break; case "cssRed": cell.RichText.SetFontColor(XLColor.White); cell.Style.Fill.BackgroundColor = prRed; break; } cell.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center; } } currentRow++; } } var footnoteRow = ws.Range(ws.Cell(currentRow, 1), ws.Cell(currentRow, maxCol)); footnoteRow.Merge(); footnoteRow.Style.Font.FontSize = prFootnoteSize; Footnotes defaultFootnote = db.Footnotes.FirstOrDefault(x => x.Footnote_Symbol == "*"); if (!footnotes.Contains(defaultFootnote)) { footnotes.Add(defaultFootnote); } int cellLength = 0; foreach (var footnote in footnotes.OrderBy(x => x.Footnote_ID)) { ws.Cell(currentRow, 1).RichText.AddText(footnote.Footnote_Symbol).VerticalAlignment = XLFontVerticalTextAlignmentValues.Superscript; ws.Cell(currentRow, 1).RichText.AddText(" " + footnote.Footnote + ";"); cellLength += footnote.Footnote_Symbol.ToString().Length + footnote.Footnote.ToString().Length + 2; if (cellLength > prFootnoteCharsNewLine) { ws.Cell(currentRow, 1).RichText.AddNewLine(); cellLength = 0; ws.Row(currentRow).Height += 15; } } var pr = ws.Range(ws.Cell(startRow, 1), ws.Cell(currentRow, maxCol)); pr.Style.Border.InsideBorder = prBorderWidth; pr.Style.Border.InsideBorderColor = prBorder; pr.Style.Border.OutsideBorder = prBorderWidth; pr.Style.Border.OutsideBorderColor = prBorder; pr.Style.Font.FontSize = prFontSize; pr.Style.Alignment.Vertical = XLAlignmentVerticalValues.Center; pr.Style.Alignment.WrapText = true; ws.Column(1).Width = prNumberWidth; ws.Column(2).Width = prIndicatorWidth; for (var i = 3; i <= 15; i++) { ws.Column(i).Width = prValueWidth; } currentRow += 2; footnotes.Clear(); } } // Prepare the response HttpResponse httpResponse = this.HttpContext.ApplicationInstance.Context.Response; httpResponse.Clear(); httpResponse.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; httpResponse.AddHeader("content-disposition", "attachment;filename=\"HelloWorld.xlsx\""); // Flush the workbook to the Response.OutputStream using (MemoryStream memoryStream = new MemoryStream()) { wb.SaveAs(memoryStream); memoryStream.WriteTo(httpResponse.OutputStream); memoryStream.Close(); } httpResponse.End(); return View(viewModel); }
public ActionResult viewPRExcel(Int16 fiscalYear, Int16? coeID) { ModelState.Clear(); var viewModel = new PRViewModel { //allCoEs = db.CoEs.ToList(), allCoEs = db.CoEs.ToList(), allMaps = db.Indicator_CoE_Maps.ToList(), allFootnoteMaps = db.Indicator_Footnote_Maps.ToList() }; // Create the workbook SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY"); var ef = new ExcelPackage(); var wb = ef.Workbook; var prBlue = ExcelColor.FromArgb(0, 51, 102); var prGreen = ExcelColor.FromArgb(0, 118, 53); var prYellow = ExcelColor.FromArgb(255, 192, 0); var prRed = ExcelColor.FromArgb(255, 0, 0); var prHeader1Fill = prBlue; var prHeader1Font = ExcelColor.White; var prHeader2Fill = ExcelColor.White; var prHeader2Font = ExcelColor.Black; var prBorder = ExcelColor.FromArgb(0, 0, 0); var prAreaFill = ExcelColor.FromArgb(192, 192, 192); var prAreaFont = ExcelColor.Black; var prBorderWidth = XLBorderStyleValues.Thin; var prFontSize = 10; var prTitleFont = 20; var prFootnoteSize = 8; var prHeightSeperator = 7.5; var prAreaObjectiveFontsize = 8; var indentLength = 24; var firstIndentLength = 20; var innerIndentLength = 5; var newLineHeight = 12.6; var defNote = "Portal data from the Canadian Institute for Health Information (CIHI) has been used to generate data within this report with acknowledgement to CIHI, the Ministry of Health and Long-Term Care (MOHLTC) and Stats Canada (as applicable). Views are not those of the acknowledged sources. Facility identifiable data other than Mount Sinai Hospital (MSH) is not to be published without the consent of that organization (except where reported at an aggregate level). As this is not a database supported by MSH, please demonstrate caution with use and interpretation of the information. MSH is not responsible for any changes derived from the source data/canned reports. Data may be subject to change."; var prNumberWidth = 4; var prIndicatorWidth = 55; var prValueWidth = 11; var prDefWidth = 100; var prRatiWidth = 50; var prCompWidth = 50; //var fitRatio = 3.77; var fitRatio = 1.7; List<int> fitAdjustableRows = new List<int>(); var prFootnoteCharsNewLine = 125; var prObjectivesCharsNewLine = 226; //DELETE THIS //coeID = null; var allCoes = new List<CoEs>(); if (coeID != 0 && coeID != null) { allCoes = viewModel.allCoEs.Where(x => x.CoE_ID == coeID).ToList(); } else { allCoes = viewModel.allCoEs.ToList(); } foreach (var coe in allCoes) { var wsPRName = coe.CoE_Abbr; var wsDefName = "Def_" + coe.CoE_Abbr; var wsPR = wb.Worksheets.Add(wsPRName); var wsDef = wb.Worksheets.Add(wsDefName); List<OfficeOpenXml.ExcelWorksheet> wsList = new List<OfficeOpenXml.ExcelWorksheet>(); wsList.Add(wsPR); wsList.Add(wsDef); foreach (var ws in wsList) { var currentRow = 4; ws.Row(2).Height = 21; int startRow; int indicatorNumber = 1; ws.PrinterSettings.TopMargin = 0; ws.PrinterSettings.HeaderMargin = 0; ws.PrinterSettings.BottomMargin = 0.5M; ws.PrinterSettings.LeftMargin = 0; ws.PrinterSettings.RightMargin = 0; ws.PrinterSettings.Orientation = eOrientation.Landscape; ws.PrinterSettings.PaperSize = ePaperSize.Legal; ws.PrinterSettings.FitToHeight = 1; ws.PrinterSettings.FitToWidth = 1; //ws.PageSetup.Margins.Top = 0; //ws.PageSetup.Margins.Header = 0; //ws.PageSetup.Margins.Left = 0.5; //ws.PageSetup.Margins.Right = 0.5; //ws.PageSetup.Margins.Bottom = 0.5; //ws.PageSetup.PageOrientation = XLPageOrientation.Landscape; //ws.PageSetup.PaperSize = XLPaperSize.LegalPaper; //ws.PageSetup.FitToPages(1, 1); string[,] columnHeaders = new string[0, 0]; if (ws.Name == wsPRName) { var prHeadder2Title = FiscalYear.FYStrFull("FY_", fiscalYear) + "Performance"; prHeadder2Title = prHeadder2Title.Replace("_", " "); columnHeaders = new string[,]{ {"Number",""}, {"Indicator",""}, {FiscalYear.FYStrFull("FY_3", fiscalYear), ""}, {FiscalYear.FYStrFull("FY_2", fiscalYear),""}, {FiscalYear.FYStrFull("FY_1", fiscalYear),""}, {prHeadder2Title,"Q1"}, {prHeadder2Title,"Q2"}, {prHeadder2Title,"Q3"}, {prHeadder2Title,"Q4"}, {prHeadder2Title,"YTD"}, {FiscalYear.FYStrFull("FY_", fiscalYear) + "Target",""}, {FiscalYear.FYStrFull("FY_", fiscalYear) + "Performance_Threshold",""}, {FiscalYear.FYStrFull("FY_", fiscalYear) + "Comparator",""} }; } else if (ws.Name == wsDefName) { columnHeaders = new string[,]{ {"Number",""}, {"Indicator",""}, {FiscalYear.FYStrFull("FY_", fiscalYear) + "Definition_Calculation",""}, {FiscalYear.FYStrFull("FY_", fiscalYear) + "Target_Rationale",""}, {FiscalYear.FYStrFull("FY_", fiscalYear) + "Comparator_Source",""} }; } var currentCol = 1; var prHeader2ColStart = 99; var prHeader2ColEnd = 1; int maxCol = columnHeaders.GetUpperBound(0) + 1; var prTitle = ws.Cells[currentRow, 1]; prTitle.Value = coe.CoE; prTitle.Style.Font.Size = prTitleFont; prTitle.Style.Font.Bold = true; prTitle.Style.Font.Color.SetColor(prHeader1Font); prTitle.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid; prTitle.Style.Fill.BackgroundColor.SetColor(prHeader1Fill); ws.Cells[currentRow, 1, currentRow, maxCol].Merge = true; ws.Cells[currentRow + 1, 1, currentRow + 1, maxCol].Merge = true; ws.Row(currentRow + 1).Height = prHeightSeperator; currentRow += 2; startRow = currentRow; for (int i = 0; i <= columnHeaders.GetUpperBound(0); i++) { if (columnHeaders[i, 1] == "") { var columnField = columnHeaders[i, 0]; string cellValue; Type t = typeof(Indicators); cellValue = t.GetProperty(columnField) != null ? ModelMetadataProviders.Current.GetMetadataForProperty(null, typeof(Indicators), columnField).DisplayName : ModelMetadataProviders.Current.GetMetadataForProperty(null, typeof(Indicator_CoE_Maps), columnField).DisplayName; ws.Cells[currentRow, currentCol].Value = cellValue; ws.Cells[currentRow, currentCol, currentRow + 1, currentCol].Merge = true; currentCol++; } else { var columnField = columnHeaders[i, 1]; var columnFieldTop = columnHeaders[i, 0]; ws.Cells[currentRow + 1, currentCol].Value = columnField; ws.Cells[currentRow, currentCol].Value = columnFieldTop; if (currentCol < prHeader2ColStart) { prHeader2ColStart = currentCol; } if (currentCol > prHeader2ColEnd) { prHeader2ColEnd = currentCol; } currentCol++; } } currentCol--; var prHeader1 = ws.Cells[currentRow, 1, currentRow + 1, currentCol]; if (prHeader2ColStart != 99) { ws.Cells[currentRow, prHeader2ColStart, currentRow, prHeader2ColEnd].Merge = true; var prHeader2 = ws.Cells[currentRow + 1, prHeader2ColStart, currentRow + 1, prHeader2ColEnd]; prHeader2.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid; prHeader2.Style.Fill.BackgroundColor.SetColor(prHeader2Fill); prHeader2.Style.Font.Color.SetColor(prHeader2Font); } prHeader1.Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center; prHeader1.Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; prHeader1.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid; prHeader1.Style.Fill.BackgroundColor.SetColor(prHeader1Fill); prHeader1.Style.Font.Color.SetColor(prHeader1Font); currentRow += 2; List<Footnotes> footnotes = new List<Footnotes>(); foreach (var areaMap in coe.Area_CoE_Map.Where(x=>x.Fiscal_Year == fiscalYear).OrderBy(x => x.Area.Sort)) { var cellLengthObjective = 0; var prArea = ws.Cells[currentRow, 1, currentRow, maxCol]; //fitAdjustableRows.Add(currentRow); prArea.Merge = true; prArea.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid; prArea.Style.Fill.BackgroundColor.SetColor(prAreaFill); prArea.Style.Font.Color.SetColor(prAreaFont); prArea.FirstOrDefault().RichText.Add(areaMap.Area.Area).Bold = true; cellLengthObjective += areaMap.Area.Area.Length; if (ws == wsPR) { var indent = new string('_', indentLength); var innerIndent = new string('_', innerIndentLength); var firstIndent = indent.Substring(0, firstIndentLength - areaMap.Area.Area.Length); var stringSeperators = new string[] { "•" }; /* if (areaMap.Objective != null) { var objectives = areaMap.Objective.Split(stringSeperators, StringSplitOptions.None); for (var i = 1; i < objectives.Length; i++) { if (i == 1) { prArea.FirstOrDefault().RichText.Add(firstIndent).Size = prAreaObjectiveFontsize; cellLengthObjective += firstIndent.Length; } //var innerIndentAdj = new string('_', maxObjectiveLength < objectives[i].Length ? 0 : maxObjectiveLength - objectives[i].Length); var innerIndentAdj = ""; cellLengthObjective += objectives[i].Length + innerIndent.Length + innerIndentAdj.Length; if (cellLengthObjective > prObjectivesCharsNewLine) { prArea.FirstOrDefault().RichText.Add("\r\n"); ws.Row(currentRow).Height += (int)newLineHeight; prArea.FirstOrDefault().RichText.Add(indent).Color = ClosedXML.Excel.XLColor.FromColor(prAreaFill); prArea.FirstOrDefault().RichText.Add(indent).SetFontColor( ClosedXML.Excel.XLColor.FromColor(prAreaFont)).SetFontSize(prAreaObjectiveFontsize); cellLengthObjective = indent.Length; } prArea.FirstCell().RichText.AddText(innerIndent + innerIndentAdj).FontColor = ClosedXML.Excel.XLColor.FromColor(prAreaFill); prArea.FirstCell().RichText.AddText(" •" + objectives[i]).FontSize = prAreaObjectiveFontsize; cellLengthObjective += objectives[i].Length; } }*/ } currentRow++; foreach (var map in viewModel.allMaps.Where(x => x.Fiscal_Year == fiscalYear).Where(e => e.Indicator.Area.Equals(areaMap.Area)).Where(d => d.CoE.CoE.Contains(coe.CoE)).OrderBy(f => f.Number)) { fitAdjustableRows.Add(currentRow); currentCol = 1; ws.Cells[currentRow, currentCol].Value = indicatorNumber; indicatorNumber++; ws.Cells[currentRow, currentCol].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; currentCol++; int j = 0; ws.Cells[currentRow, currentCol].Value = map.Indicator.Indicator; foreach (var footnote in map.Indicator.Indicator_Footnote_Map.Where(x => x.Fiscal_Year == fiscalYear).Where(e => e.Indicator_ID == map.Indicator_ID).OrderBy(e => e.Indicator_ID)) { if (!footnotes.Contains(footnote.Footnote)) { footnotes.Add(footnote.Footnote); } if (j != 0) { ws.Cells[currentRow, currentCol].RichText.Add(",").VerticalAlign = OfficeOpenXml.Style.ExcelVerticalAlignmentFont.Superscript; } ws.Cells[currentRow, currentCol].RichText.Add(footnote.Footnote.Footnote_Symbol).VerticalAlign = OfficeOpenXml.Style.ExcelVerticalAlignmentFont.Superscript; j++; } ws.Cells[currentRow, currentCol].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Left; currentCol++; if (ws.Name == wsPRName) { for (var i = 3; i <= 15; i++) { ws.Column(i).Width = ws.Name == wsPRName ? prValueWidth : prDefWidth; } var obj = map.Indicator; var type = obj.GetType(); string[,] columnIndicators = new string[,]{ {(string)type.GetProperty(FiscalYear.FYStrFull("FY_3",fiscalYear)).GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_3",fiscalYear) + "_Sup").GetValue(obj,null), "" }, {(string)type.GetProperty(FiscalYear.FYStrFull("FY_2",fiscalYear)).GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_2",fiscalYear) + "_Sup").GetValue(obj,null), "" }, {(string)type.GetProperty(FiscalYear.FYStrFull("FY_1",fiscalYear)).GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_1",fiscalYear) + "_Sup").GetValue(obj,null), "" }, {(string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Q1").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Q1_Sup").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Q1_Color").GetValue(obj,null), }, {(string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Q2").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Q2_Sup").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Q2_Color").GetValue(obj,null), }, {(string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Q3").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Q3_Sup").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Q3_Color").GetValue(obj,null), }, {(string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Q4").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Q4_Sup").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Q4_Color").GetValue(obj,null), }, {(string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "YTD").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "YTD_Sup").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "YTD_Color").GetValue(obj,null), }, {(string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Target").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Target_Sup").GetValue(obj,null), "" }, {(string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Performance_Threshold").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Performance_Threshold_Sup").GetValue(obj,null), "" }, {(string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Comparator").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Comparator_Sup").GetValue(obj,null), "" }, }; var startCol = currentCol; int k = 1; for (var i = 0; i <= columnIndicators.GetUpperBound(0); i++) { for (j = 0; j <= columnIndicators.GetUpperBound(1); j++) { if (columnIndicators[i, j] != null) { columnIndicators[i, j] = columnIndicators[i, j].Replace("<b>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("</b>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("<u>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("</u>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("<i>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("</i>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("<sup>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("</sup>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("<sub>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("</sub>", ""); } } if (i != columnIndicators.GetUpperBound(0) && columnIndicators[i, 0] == "=") { k = 1; while (columnIndicators[i + k, 0] == "=") { k++; } ws.Cells[currentRow, startCol + i - 1, currentRow, startCol + i + k - 1].Merge = true; i += k - 1; k = 1; } else if (columnIndicators[i, 0] != "=") { var cell = ws.Cells[currentRow, currentCol + i]; string cellValue = ""; if (columnIndicators[i, 0] != null) { cellValue = columnIndicators[i, 0].ToString(); } if (cellValue.Contains("$")) { } cell.Value = "'" + cellValue; if (columnIndicators[i, 1] != null) { cell.RichText.Add(columnIndicators[i, 1]).VerticalAlign = OfficeOpenXml.Style.ExcelVerticalAlignmentFont.Superscript; } switch (columnIndicators[i, 2]) { case "cssWhite": //cell.RichText.SetFontColor(XLColor.Black); cell.Style.Font.Color.SetColor(ExcelColor.Black); cell.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid; cell.Style.Fill.BackgroundColor.SetColor(ExcelColor.White); break; case "cssGreen": cell.Style.Font.Color.SetColor(ExcelColor.White); cell.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid; cell.Style.Fill.BackgroundColor.SetColor(prGreen); break; case "cssYellow": cell.Style.Font.Color.SetColor(ExcelColor.Black); cell.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid; cell.Style.Fill.BackgroundColor.SetColor(prYellow); break; case "cssRed": cell.Style.Font.Color.SetColor(ExcelColor.White); cell.Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid; cell.Style.Fill.BackgroundColor.SetColor(prRed); break; } cell.Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; } } currentRow++; } else if (ws.Name == wsDefName) { ws.Column(3).Width = prDefWidth; ws.Column(4).Width = prRatiWidth; ws.Column(5).Width = prCompWidth; var obj = map.Indicator; var type = obj.GetType(); string defn = (string)type.GetProperty(FiscalYear.FYStrFull("FY_", fiscalYear) + "Definition_Calculation").GetValue(obj, null); string rationale = (string)type.GetProperty(FiscalYear.FYStrFull("FY_", fiscalYear) + "Target_Rationale").GetValue(obj, null); string comp = (string)type.GetProperty(FiscalYear.FYStrFull("FY_", fiscalYear) + "Comparator_Source").GetValue(obj, null); double maxLines = 1; double lines; var listColumnStrings = new List<string>(); listColumnStrings.Add(defn); listColumnStrings.Add(rationale); listColumnStrings.Add(comp); foreach (var str in listColumnStrings) { if (str != null) { lines = str.Length / ws.Column(currentCol).Width; maxLines = maxLines < lines ? lines : maxLines; ws.Cells[currentRow, currentCol].Value = str; } ws.Cells[currentRow, currentCol].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Left; currentCol++; } ws.Row(currentRow).Height = newLineHeight*Math.Ceiling(maxLines); currentRow++; } } } var footnoteRow = ws.Cells[currentRow, 1, currentRow, maxCol]; footnoteRow.Merge = true; footnoteRow.Style.Font.Size = prFootnoteSize; /*Footnotes defaultFootnote = db.Footnotes.FirstOrDefault(x => x.Footnote_Symbol == "*"); if (!footnotes.Contains(defaultFootnote)) { footnotes.Add(defaultFootnote); }*/ int cellLengthFootnote = 0; if (ws.Name == wsPRName) { foreach (var footnote in footnotes) { ws.Cells[currentRow, 1].RichText.Add(footnote.Footnote_Symbol).VerticalAlign = OfficeOpenXml.Style.ExcelVerticalAlignmentFont.Superscript; ws.Cells[currentRow, 1].RichText.Add(" " + footnote.Footnote + ";"); ws.Cells[currentRow, 1].Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Top; cellLengthFootnote += footnote.Footnote_Symbol.ToString().Length + footnote.Footnote.ToString().Length + 2; if (cellLengthFootnote > prFootnoteCharsNewLine) { ws.Cells[currentRow, 1].RichText.Add("\r\n");; cellLengthFootnote = 0; ws.Row(currentRow).Height += newLineHeight; } } } else { ws.Cells[currentRow, 1].Value = defNote; ws.Row(currentRow).Height = 28; } var pr = ws.Cells[startRow, 1, currentRow - 1, maxCol]; //pr.Style.Border.InsideBorder = prBorderWidth; //pr.Style.Border.InsideBorderColor = prBorder; //pr.Style.Border.OutsideBorder = prBorderWidth; //pr.Style.Border.OutsideBorderColor = prBorder; pr.Style.Font.Size = prFontSize; pr = ws.Cells[startRow, 1, currentRow, maxCol]; pr.Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center; pr.Style.WrapText = true; ws.Column(1).Width = prNumberWidth; ws.Column(2).Width = prIndicatorWidth; footnotes.Clear(); indicatorNumber = 1; /*var totalHeight = ExcelFunctions.getTotalHeight(ws,4); var totalWidth = ExcelFunctions.getTotalWidth(ws,1); var fitHeight = (int)(totalWidth / fitRatio); var fitWidth = (int)(totalHeight * fitRatio); if (ws.Name == "Def_WIH Obs") { System.Diagnostics.Debugger.Break(); } if (fitHeight > totalHeight) { var fitAddHeightTotal = (fitHeight - totalHeight); var fitAddHeightPerRow = fitAddHeightTotal / fitAdjustableRows.Count; foreach (var row in fitAdjustableRows) { ws.Row(row).Height += fitAddHeightPerRow; } } else { while ((fitWidth - totalWidth) / fitWidth > 0.001 ) { var fitAddWidthTotal = (fitWidth - totalWidth) / 10; var fitAddWidthPerRow = fitAddWidthTotal / (ws.LastColumnUsed().ColumnNumber() - 1); foreach (var col in ws.Columns(2, ws.LastColumnUsed().ColumnNumber())) { col.Width += fitAddWidthPerRow / 5.69; } ExcelFunctions.AutoFitWorksheet(ws, 2, 3, newLineHeight); totalHeight = ExcelFunctions.getTotalHeight(ws, 4); totalWidth = ExcelFunctions.getTotalWidth(ws, 1); fitHeight = (int)(totalWidth / fitRatio); fitWidth = (int)(totalHeight * fitRatio); } }*/ } } FileStream fs = new FileStream(this.HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/test1.xlsx"), FileMode.Create); ef.SaveAs(fs); fs.Close(); //var test = GemBox.Spreadsheet.ExcelFile.Load(this.HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/test.xlsx"), LoadOptions.XlsxDefault); var test = new Spire.Xls.Workbook(); test.LoadFromFile(this.HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/test1.xlsx")); // Set PDF template Spire.Pdf.PdfDocument pdfDocument = new Spire.Pdf.PdfDocument(); pdfDocument.PageSettings.Orientation = Spire.Pdf.PdfPageOrientation.Landscape; pdfDocument.PageSettings.Width = 970; pdfDocument.PageSettings.Height = 850; //Convert Excel to PDF using the template above Spire.Xls.Converter.PdfConverter pdfConverter = new Spire.Xls.Converter.PdfConverter(test); Spire.Xls.Converter.PdfConverterSettings settings = new Spire.Xls.Converter.PdfConverterSettings(); settings.TemplateDocument = pdfDocument; pdfDocument = pdfConverter.Convert(settings); // Save and preview PDF pdfDocument.SaveToFile(this.HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/test1.pdf")); //wb.SaveAs(preImage); MemoryStream postImage = new MemoryStream(); SLDocument postImageWb = new SLDocument(preImage); string picPath = this.HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/logo.png"); SLPicture picLogo = new SLPicture(picPath); string picPathOPEO = this.HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/logoOPEO.png"); SLPicture picLogoOPEO = new SLPicture(picPathOPEO); string picMonthlyPath = this.HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/Monthly.png"); SLPicture picMonthly = new SLPicture(picMonthlyPath); string picQuaterlyPath = this.HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/quaterly.png"); SLPicture picQuaterly = new SLPicture(picQuaterlyPath); string picNAPath = this.HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/na.png"); SLPicture picNA = new SLPicture(picNAPath); string picTargetPath = this.HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/target.png"); SLPicture picTarget = new SLPicture(picTargetPath); /* foreach (var ws in wb.Worksheets) { postImageWb.SelectWorksheet(ws.Name); for (int i = 1; i < 20; ++i) { var a = postImageWb.GetRowHeight(i); } picLogo.SetPosition(0, 0); picLogo.ResizeInPercentage(25, 25); postImageWb.InsertPicture(picLogo); picLogoOPEO.SetRelativePositionInPixels(0, ws.LastColumnUsed().ColumnNumber() + 1, -140, 0); picLogoOPEO.ResizeInPercentage(45, 45); postImageWb.InsertPicture(picLogoOPEO); if (ws.Name.Substring(0, 3) != "Def") { picTarget.SetRelativePositionInPixels(ws.LastRowUsed().RowNumber() + 1, ws.LastColumnUsed().ColumnNumber() + 1, -240, 1); picNA.SetRelativePositionInPixels(ws.LastRowUsed().RowNumber() + 1, ws.LastColumnUsed().ColumnNumber() + 1, -400, 1); picMonthly.SetRelativePositionInPixels(ws.LastRowUsed().RowNumber() + 1, ws.LastColumnUsed().ColumnNumber() + 1, -500, 1); picQuaterly.SetRelativePositionInPixels(ws.LastRowUsed().RowNumber() + 1, ws.LastColumnUsed().ColumnNumber() + 1, -490, 1); picMonthly.ResizeInPercentage(70, 70); picQuaterly.ResizeInPercentage(70, 70); picNA.ResizeInPercentage(70, 70); picTarget.ResizeInPercentage(70, 70); postImageWb.InsertPicture(picMonthly); postImageWb.InsertPicture(picQuaterly); postImageWb.InsertPicture(picNA); postImageWb.InsertPicture(picTarget); } }*/ // Prepare the response HttpResponse httpResponse = this.HttpContext.ApplicationInstance.Context.Response; httpResponse.Clear(); httpResponse.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; httpResponse.AddHeader("content-disposition", "attachment;filename=\"test.xlsx\""); //httpResponse.ContentType = "application/pdf"; //httpResponse.AddHeader("content-disposition", "attachment;filename=\"test.pdf\""); // Flush the workbook to the Response.OutputStream using (MemoryStream memoryStream = new MemoryStream()) { postImageWb.SaveAs(memoryStream); memoryStream.WriteTo(httpResponse.OutputStream); memoryStream.Close(); } httpResponse.End(); return View(viewModel); }
public ActionResult viewPR() { ModelState.Clear(); var viewModel = new PRViewModel { //allCoEs = db.CoEs.ToList(), allCoEs = db.CoEs.ToList(), allMaps = db.Indicator_CoE_Maps.ToList(), allFootnoteMaps = db.Indicator_Footnote_Maps.ToList() }; return View(viewModel); }
public ActionResult viewPR(Int16 fiscalYear, Int16? analystID) { var allMaps = new List<Indicator_CoE_Maps>(); if (analystID.HasValue) { allMaps = db.Indicator_CoE_Maps.Where(x=>x.Indicator.Analyst_ID == analystID).ToList(); } else { allMaps = db.Indicator_CoE_Maps.ToList(); } ModelState.Clear(); var viewModel = new PRViewModel { //allCoEs = db.CoEs.ToList(), allAnalysts = db.Analysts.ToList(), allCoEs = db.CoEs.ToList(), allMaps = allMaps, allFootnoteMaps = db.Indicator_Footnote_Maps.ToList(), Fiscal_Year = fiscalYear, Analyst_ID = analystID, allColors = db.Color_Types.ToList(), }; return View(viewModel); }
public ActionResult viewPRPdf(Int16 fiscalYear, Int16? coeID) { var allCoEs = db.CoEs.ToList(); if (coeID != 0 && coeID != null) { allCoEs = allCoEs.Where(x => x.CoE_ID == coeID).ToList(); } else { allCoEs = allCoEs.Where(x => x.CoE_ID != 0).ToList(); } var allMaps = new List<Indicator_CoE_Maps>(); allMaps = db.Indicator_CoE_Maps.ToList(); ModelState.Clear(); var viewModel = new PRViewModel { //allCoEs = db.CoEs.ToList(), allCoEs = allCoEs, allAnalysts = db.Analysts.ToList(), allMaps = allMaps, allFootnoteMaps = db.Indicator_Footnote_Maps.ToList(), allFootnotes = db.Footnotes.ToList(), Fiscal_Year = fiscalYear, Analyst_ID = null, allColors = db.Color_Types.ToList(), }; HttpResponse httpResponse = this.HttpContext.ApplicationInstance.Context.Response; httpResponse.Clear(); httpResponse.ContentType = "application/pdf"; httpResponse.AddHeader("content-disposition", "attachment;filename=\"test.pdf\""); MemoryStream memoryStream = new MemoryStream(); string apiKey = "2429a8e1-7cf6-4a77-9f7f-f4a85a9fcc14"; var test = (this.RenderView("viewPRSimple", viewModel)); string value = "<meta charset='UTF-8' />" + test; List<string> coeNotes; var topMargin = 6; if (allCoEs.FirstOrDefault(x => x.CoE_ID == coeID).CoE_Notes != null && allCoEs.FirstOrDefault(x => x.CoE_ID == coeID).CoE_Notes != "") { coeNotes = Regex.Matches(allCoEs.FirstOrDefault(x => x.CoE_ID == coeID).CoE_Notes, @"\[.*?\]").Cast<Match>().Select(m => m.Value.Substring(1, m.Value.Length - 2)).ToList(); var coeNotesCount = coeNotes.Count(); topMargin+=coeNotesCount * 5; } using (var client = new WebClient()) { NameValueCollection options = new NameValueCollection(); options.Add("apikey", apiKey); options.Add("value", value); options.Add("DisableJavascript", "false"); options.Add("PageSize", "Legal"); options.Add("UseLandscape", "true"); options.Add("Zoom", "1.0"); options.Add("MarginLeft", "2"); options.Add("MarginTop", "10"); options.Add("MarginBottomn", "5"); options.Add("MarginRight", "2"); //options.Add("HeaderUrl", this.HttpContext.ApplicationInstance.Server.MapPath("viewPRSimple_Header")); byte[] result = client.UploadValues("http://api.html2pdfrocket.com/pdf", options); //httpResponse.BinaryWrite(result); memoryStream.Write(result, 0, result.Length); } string picPath = this.HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/SHSheader.png"); Image logo = Image.GetInstance(picPath); //string picPathOPEO = this.HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/logoOPEO.png"); //Image logoOPEO = Image.GetInstance(picPathOPEO); string footerPath = this.HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/footer.png"); Image footer = Image.GetInstance(footerPath); string picMonthlyPath = this.HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/Monthly.png"); string picQuaterlyPath = this.HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/quaterly.png"); string picNAPath = this.HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/na.png"); string picTargetPath = this.HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/target.png"); string picDraftPath = this.HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/draft.png"); Image picDraft = Image.GetInstance(picDraftPath); var pdfDocument = new iTextSharp.text.Document(); var outStream = new MemoryStream(); var writer = iTextSharp.text.pdf.PdfWriter.GetInstance(pdfDocument, outStream); pdfDocument.Open(); var reader = new iTextSharp.text.pdf.PdfReader(memoryStream.ToArray()); for (var page = 1; page <= reader.NumberOfPages; page++) { pdfDocument.SetPageSize(reader.GetPageSizeWithRotation(page)); pdfDocument.NewPage(); var importedPage = writer.GetImportedPage(reader, page); var pageRotation = reader.GetPageRotation(page); var pageWidth = reader.GetPageSizeWithRotation(page).Width; var pageHeight = reader.GetPageSizeWithRotation(page).Height; switch (pageRotation) { case 0: writer.DirectContent.AddTemplate(importedPage, 1f, 0, 0, 1f, 0, 0); break; case 90: writer.DirectContent.AddTemplate(importedPage, 0, -1f, 1f, 0, 0, pageHeight); break; case 180: writer.DirectContent.AddTemplate( importedPage, -1f, 0, 0, -1f, pageWidth, pageHeight); break; case 270: writer.DirectContent.AddTemplate(importedPage, 0, 1f, -1f, 0, pageWidth, 0); break; } pdfDocument.SetPageSize(pdfDocument.PageSize); logo.Alignment = Element.ALIGN_CENTER; logo.ScalePercent(70,70); logo.SetAbsolutePosition(5, reader.GetPageSizeWithRotation(page).Height - logo.ScaledHeight-15); writer.DirectContent.AddImage(logo); var obj = db.CoEs.FirstOrDefault(x => x.CoE_ID == coeID); var type = obj.GetType(); var isDraft = (bool)(type.GetProperty(FiscalYear.FYStrFull("FY_", fiscalYear) + "Draft").GetValue(obj, null) ?? false); if (isDraft) { picDraft.Alignment = Element.ALIGN_CENTER; picDraft.ScalePercent(70, 70); picDraft.SetAbsolutePosition(reader.GetPageSizeWithRotation(page).Width / 4, 0); writer.DirectContent.AddImage(picDraft); } //logoOPEO.Alignment = Element.ALIGN_CENTER; //logoOPEO.ScalePercent(20, 20); //logoOPEO.SetAbsolutePosition(reader.GetPageSizeWithRotation(page).Width - logoOPEO.ScaledWidth - 5, reader.GetPageSizeWithRotation(page).Height - logoOPEO.ScaledHeight - 5); //writer.DirectContent.AddImage(logoOPEO); if (page == 1) { footer.Alignment = Element.ALIGN_CENTER; footer.ScalePercent(45, 45); footer.SetAbsolutePosition(reader.GetPageSizeWithRotation(page).Width - footer.ScaledWidth - 6, 10); writer.DirectContent.AddImage(footer); } } writer.CloseStream = false; pdfDocument.Close(); outStream.WriteTo(httpResponse.OutputStream); outStream.Close(); httpResponse.End(); return View(viewModel); }
public ActionResult viewPRExcel(Int16 fiscalYear, Int16? coeID) { ModelState.Clear(); var viewModel = new PRViewModel { //allCoEs = db.CoEs.ToList(), allCoEs = db.CoEs.ToList(), allMaps = db.Indicator_CoE_Maps.ToList(), allFootnoteMaps = db.Indicator_Footnote_Maps.ToList() }; // Create the workbook var wb = new XLWorkbook(); var prBlue = ExcelGlobalVariables.prBlue;// XLColor.FromArgb(0, 51, 102); var prGreen = ExcelGlobalVariables.prGreen;//XLColor.FromArgb(0, 118, 53); var prYellow = ExcelGlobalVariables.prYellow; //XLColor.FromArgb(255, 192, 0); var prRed = ExcelGlobalVariables.prRed;// XLColor.FromArgb(255, 0, 0); var prHeader1Fill = ExcelGlobalVariables.prHeader1Fill;//prBlue; var prHeader1Font = ExcelGlobalVariables.prHeader1Font;//XLColor.White; var prHeader2Fill = ExcelGlobalVariables.prHeader2Fill;//XLColor.White; var prHeader2Font = ExcelGlobalVariables.prHeader2Font;//XLColor.Black; var prBorder = ExcelGlobalVariables.prBorder;//XLColor.FromArgb(0, 0, 0); var prAreaFill = ExcelGlobalVariables.prAreaFill;//XLColor.FromArgb(192, 192, 192); var prAreaFont = ExcelGlobalVariables.prAreaFont;//XLColor.Black; var prBorderWidth = XLBorderStyleValues.Thin; var prFontSize = 10; var prTitleFont = 20; var prFootnoteSize = 8; var prHeightSeperator = 7.5; var prAreaObjectiveFontsize = 8; var indentLength = 2; var newLineHeight = 12.6; var defNote = "Portal data from the Canadian Institute for Health Information (CIHI) has been used to generate data within this report with acknowledgement to CIHI, the Ministry of Health and Long-Term Care (MOHLTC) and Stats Canada (as applicable). Views are not those of the acknowledged sources. Facility identifiable data other than Mount Sinai Hospital (MSH) is not to be published without the consent of that organization (except where reported at an aggregate level). As this is not a database supported by MSH, please demonstrate caution with use and interpretation of the information. MSH is not responsible for any changes derived from the source data/canned reports. Data may be subject to change."; var prNumberWidth = 4; var prIndicatorWidth = 55; var prValueWidth = 11; var prDefWidth = 100; var prRatiWidth = 50; var prCompWidth = 50; //var fitRatio = 3.77; var fitRatio = 1.7; List<int> fitAdjustableRows = new List<int>(); var prFootnoteCharsNewLine = 125; var prObjectivesCharsNewLine = 226; var allCoes = new List<CoEs>(); if (coeID != 0 && coeID != null) { allCoes = viewModel.allCoEs.Where(x => x.CoE_ID == coeID).ToList(); } else { allCoes = viewModel.allCoEs.ToList(); } foreach (var coe in allCoes) { var wsPRName = coe.CoE_Abbr != null && coe.CoE_Abbr != "" ? coe.CoE_Abbr : "Indicators"; var wsDefName = coe.CoE_Abbr != null && coe.CoE_Abbr != "" ? "Def_" + coe.CoE_Abbr : "Def_Indicators"; var wsPR = wb.Worksheets.Add(wsPRName); var wsDef = wb.Worksheets.Add(wsDefName); List<IXLWorksheet> wsList = new List<IXLWorksheet>(); wsList.Add(wsPR); wsList.Add(wsDef); foreach (var ws in wsList) { var currentRow = 4; ws.Row(2).Height = 21; int startRow; int indicatorNumber = 1; ws.PageSetup.Margins.Top = 0; ws.PageSetup.Margins.Header = 0; ws.PageSetup.Margins.Left = 0.5; ws.PageSetup.Margins.Right = 0.5; ws.PageSetup.Margins.Bottom = 0.5; ws.PageSetup.PageOrientation = XLPageOrientation.Landscape; ws.PageSetup.PaperSize = XLPaperSize.LegalPaper; ws.PageSetup.FitToPages(1, 1); string[,] columnHeaders = new string[0, 0]; if (ws.Name == wsPRName) { var prHeadder2Title = FiscalYear.FYStrFull("FY_", fiscalYear) + "Performance"; prHeadder2Title = prHeadder2Title.Replace("_", " "); columnHeaders = new string[,]{ {"Number",""}, {"Indicator",""}, {FiscalYear.FYStrFull("FY_3", fiscalYear), ""}, {FiscalYear.FYStrFull("FY_2", fiscalYear),""}, {FiscalYear.FYStrFull("FY_1", fiscalYear),""}, {prHeadder2Title,"Q1"}, {prHeadder2Title,"Q2"}, {prHeadder2Title,"Q3"}, {prHeadder2Title,"Q4"}, {prHeadder2Title,"YTD"}, {FiscalYear.FYStrFull("FY_", fiscalYear) + "Target",""}, {FiscalYear.FYStrFull("FY_", fiscalYear) + "Performance_Threshold",""}, {FiscalYear.FYStrFull("FY_", fiscalYear) + "Comparator",""} }; } else if (ws.Name == wsDefName) { columnHeaders = new string[,]{ {"Number",""}, {"Indicator",""}, {FiscalYear.FYStrFull("FY_", fiscalYear) + "Definition_Calculation",""}, {FiscalYear.FYStrFull("FY_", fiscalYear) + "Target_Rationale",""}, {FiscalYear.FYStrFull("FY_", fiscalYear) + "Comparator_Source",""} }; } var currentCol = 1; var prHeader2ColStart = 99; var prHeader2ColEnd = 1; int maxCol = columnHeaders.GetUpperBound(0) + 1; var prTitle = ws.Cell(currentRow, 1); prTitle.Value = coe.CoE; prTitle.Style.Font.FontSize = prTitleFont; prTitle.Style.Font.Bold = true; prTitle.Style.Font.FontColor = prHeader1Font; prTitle.Style.Fill.BackgroundColor = prHeader1Fill; ws.Range(ws.Cell(currentRow, 1), ws.Cell(currentRow, maxCol)).Merge(); ws.Range(ws.Cell(currentRow + 1, 1), ws.Cell(currentRow + 1, maxCol)).Merge(); ws.Row(currentRow + 1).Height = prHeightSeperator; currentRow += 2; startRow = currentRow; for (int i = 0; i <= columnHeaders.GetUpperBound(0); i++) { if (columnHeaders[i, 1] == "") { var columnField = columnHeaders[i, 0]; string cellValue; Type t = typeof(Indicators); cellValue = t.GetProperty(columnField) != null ? ModelMetadataProviders.Current.GetMetadataForProperty(null, typeof(Indicators), columnField).DisplayName : ModelMetadataProviders.Current.GetMetadataForProperty(null, typeof(Indicator_CoE_Maps), columnField).DisplayName; ws.Cell(currentRow, currentCol).Value = cellValue; ws.Range(ws.Cell(currentRow, currentCol), ws.Cell(currentRow + 1, currentCol)).Merge(); currentCol++; } else { var columnField = columnHeaders[i, 1]; var columnFieldTop = columnHeaders[i, 0]; ws.Cell(currentRow + 1, currentCol).Value = columnField; ws.Cell(currentRow, currentCol).Value = columnFieldTop; if (currentCol < prHeader2ColStart) { prHeader2ColStart = currentCol; } if (currentCol > prHeader2ColEnd) { prHeader2ColEnd = currentCol; } currentCol++; } } currentCol--; ws.Range(ws.Cell(currentRow, prHeader2ColStart).Address, ws.Cell(currentRow, prHeader2ColEnd).Address).Merge(); var prHeader1 = ws.Range(ws.Cell(currentRow, 1).Address, ws.Cell(currentRow + 1, currentCol).Address); var prHeader2 = ws.Range(ws.Cell(currentRow + 1, prHeader2ColStart).Address, ws.Cell(currentRow + 1, prHeader2ColEnd).Address); prHeader1.Style.Alignment.Vertical = XLAlignmentVerticalValues.Center; prHeader1.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center; prHeader1.Style.Fill.BackgroundColor = prHeader1Fill; prHeader1.Style.Font.FontColor = prHeader1Font; prHeader2.Style.Fill.BackgroundColor = prHeader2Fill; prHeader2.Style.Font.FontColor = prHeader2Font; currentRow += 2; List<Footnotes> footnotes = new List<Footnotes>(); foreach (var areaMap in coe.Area_CoE_Map.Where(x => x.Fiscal_Year == fiscalYear).OrderBy(x => x.Area.Sort)) { var cellLengthObjective = 0; var prArea = ws.Range(ws.Cell(currentRow, 1), ws.Cell(currentRow, maxCol)); //fitAdjustableRows.Add(currentRow); prArea.Merge(); prArea.Style.Fill.BackgroundColor = prAreaFill; prArea.Style.Font.FontColor = prAreaFont; prArea.FirstCell().RichText.AddText(areaMap.Area.Area).Bold = true; cellLengthObjective += areaMap.Area.Area.Length; if (ws == wsPR) { var indent = new string('_', indentLength); var stringSeperators = new string[] { "•" }; if (areaMap.Objective != null) { var objectives = Regex.Matches(areaMap.Objective, @"\[.*?\]").Cast<Match>().Select(m => m.Value.Substring(1, m.Value.Length - 2)).ToList(); //for (var i = 1; i < objectives.Length; i++) var i = 1; foreach (var objective in objectives) { prArea.FirstCell().RichText.AddNewLine(); ws.Row(currentRow).Height += newLineHeight; prArea.FirstCell().RichText.AddText(indent).SetFontColor(prAreaFill).SetFontSize(prAreaObjectiveFontsize); prArea.FirstCell().RichText.AddText(" " + i +". " + objective).FontSize = prAreaObjectiveFontsize; i++; } } } currentRow++; var allMaps = viewModel.allMaps.Where(x => x.Fiscal_Year == fiscalYear).Where(e => e.Indicator.Area.Equals(areaMap.Area)).Where(d => d.CoE.CoE != null && d.CoE.CoE.Contains(coe.CoE)).OrderBy(f => f.Number).ToList(); var allNValues = new List<Indicator_CoE_Maps>(); if (ws.Name == wsPRName) { allNValues = viewModel.allMaps.Where(x => x.Fiscal_Year == fiscalYear && x.Indicator.Indicator_N_Value == true).ToList(); } var allMapsWithNValues = new List<Indicator_CoE_Maps>(); foreach (var nValue in allNValues) { var indicatorIndex = allMaps.FirstOrDefault(x => x.Indicator_ID == nValue.Indicator.Indicator_N_Value_ID); if (indicatorIndex != null) { var position = allMaps.IndexOf(indicatorIndex); allMapsWithNValues.Add(indicatorIndex); allMaps.Insert(position + 1, nValue); } } foreach (var map in allMaps) { fitAdjustableRows.Add(currentRow); currentCol = 1; int rowSpan = 1; if (allMapsWithNValues.Contains(map) || !allNValues.Contains(map)) { if (allMapsWithNValues.Contains(map)) { rowSpan = 2; ws.Range(ws.Cell(currentRow, currentCol), ws.Cell(currentRow + 1, currentCol)).Merge(); ws.Range(ws.Cell(currentRow, currentCol + 1), ws.Cell(currentRow + 1, currentCol + 1)).Merge(); } ws.Cell(currentRow, currentCol).Style.Border.OutsideBorder = prBorderWidth; ws.Cell(currentRow, currentCol).Style.Border.OutsideBorderColor = prBorder; ws.Cell(currentRow, currentCol).Value = indicatorNumber; indicatorNumber++; ws.Cell(currentRow, currentCol).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center; currentCol++; ws.Cell(currentRow, currentCol).Style.Border.OutsideBorder = prBorderWidth; ws.Cell(currentRow, currentCol).Style.Border.OutsideBorderColor = prBorder; int j = 0; ws.Cell(currentRow, currentCol).Value = map.Indicator.Indicator; foreach (var footnote in map.Indicator.Indicator_Footnote_Map.Where(x => x.Fiscal_Year == fiscalYear).Where(e => e.Indicator_ID == map.Indicator_ID).OrderBy(e => e.Indicator_ID)) { if (!footnotes.Contains(footnote.Footnote)) { footnotes.Add(footnote.Footnote); } if (j != 0) { ws.Cell(currentRow, currentCol).RichText.AddText(",").VerticalAlignment = XLFontVerticalTextAlignmentValues.Superscript; } ws.Cell(currentRow, currentCol).RichText.AddText(footnote.Footnote.Footnote_Symbol).VerticalAlignment = XLFontVerticalTextAlignmentValues.Superscript; j++; } ws.Cell(currentRow, currentCol).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left; currentCol++; } else { ws.Cell(currentRow, currentCol).Style.Border.OutsideBorder = prBorderWidth; ws.Cell(currentRow, currentCol).Style.Border.OutsideBorderColor = prBorder; currentCol += 2; rowSpan = 0; } if (ws.Name == wsPRName) { for (var i = 3; i <= 15; i++) { ws.Column(i).Width = ws.Name == wsPRName ? prValueWidth : prDefWidth; } var obj = map.Indicator; var type = obj.GetType(); string[,] columnIndicators = new string[,]{ {(string)type.GetProperty(FiscalYear.FYStrFull("FY_3",fiscalYear)).GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_3",fiscalYear) + "_Sup").GetValue(obj,null), "", "1" }, {(string)type.GetProperty(FiscalYear.FYStrFull("FY_2",fiscalYear)).GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_2",fiscalYear) + "_Sup").GetValue(obj,null), "", "1" }, {(string)type.GetProperty(FiscalYear.FYStrFull("FY_1",fiscalYear)).GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_1",fiscalYear) + "_Sup").GetValue(obj,null), "", "1" }, {(string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Q1").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Q1_Sup").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Q1_Color").GetValue(obj,null), "1" }, {(string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Q2").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Q2_Sup").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Q2_Color").GetValue(obj,null), "1" }, {(string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Q3").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Q3_Sup").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Q3_Color").GetValue(obj,null), "1", }, {(string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Q4").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Q4_Sup").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Q4_Color").GetValue(obj,null), "1" }, {(string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "YTD").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "YTD_Sup").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "YTD_Color").GetValue(obj,null), "1" }, {(string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Target").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Target_Sup").GetValue(obj,null), "", rowSpan.ToString() }, {(string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Performance_Threshold").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Performance_Threshold_Sup").GetValue(obj,null), "", rowSpan.ToString() }, {(string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Comparator").GetValue(obj,null), (string)type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Comparator_Sup").GetValue(obj,null), "", rowSpan.ToString() }, }; var startCol = currentCol; int k = 1; for (var i = 0; i <= columnIndicators.GetUpperBound(0); i++) { for (var j = 0; j <= columnIndicators.GetUpperBound(1); j++) { if (columnIndicators[i, j] != null) { columnIndicators[i, j] = columnIndicators[i, j].Replace("<b>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("</b>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("<u>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("</u>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("<i>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("</i>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("<sup>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("</sup>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("<sub>", ""); columnIndicators[i, j] = columnIndicators[i, j].Replace("</sub>", ""); } } if (i != columnIndicators.GetUpperBound(0) && columnIndicators[i, 0] == "=") { k = 1; while (columnIndicators[i + k, 0] == "=") { k++; } ws.Range(ws.Cell(currentRow, startCol + i - 1), ws.Cell(currentRow, startCol + i + k - 1)).Merge(); i += k - 1; k = 1; } else if (columnIndicators[i, 0] != "=") { ws.Cell(currentRow, currentCol + i).Style.Border.OutsideBorder = prBorderWidth; ws.Cell(currentRow, currentCol + i).Style.Border.OutsideBorderColor = prBorder; if (columnIndicators[i, 3] != "0") { if (columnIndicators[i, 3] == "2") { ws.Range(ws.Cell(currentRow, currentCol + i), ws.Cell(currentRow + 1, currentCol + i)).Merge(); } if (allNValues.Contains(map)) { ws.Cell(currentRow, currentCol + i).Style.Border.TopBorder = XLBorderStyleValues.None; } else if (allMapsWithNValues.Contains(map)) { ws.Cell(currentRow, currentCol + i).Style.Border.BottomBorder = XLBorderStyleValues.None; } var cell = ws.Cell(currentRow, currentCol + i); string cellValue = ""; if (columnIndicators[i, 0] != null) { cellValue = columnIndicators[i, 0].ToString(); } if (cellValue.Contains("$")) { } cell.Value = "'" + cellValue; if (columnIndicators[i, 1] != null) { cell.RichText.AddText(columnIndicators[i, 1]).VerticalAlignment = XLFontVerticalTextAlignmentValues.Superscript; } switch (columnIndicators[i, 2]) { case "cssWhite": cell.RichText.SetFontColor(XLColor.Black); cell.Style.Fill.BackgroundColor = XLColor.White; break; case "cssGreen": cell.RichText.SetFontColor(XLColor.White); cell.Style.Fill.BackgroundColor = prGreen; break; case "cssYellow": cell.RichText.SetFontColor(XLColor.Black); cell.Style.Fill.BackgroundColor = prYellow; break; case "cssRed": cell.RichText.SetFontColor(XLColor.White); cell.Style.Fill.BackgroundColor = prRed; break; } cell.Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center; } } } currentRow++; } else if (ws.Name == wsDefName) { ws.Column(3).Width = prDefWidth; ws.Column(4).Width = prRatiWidth; ws.Column(5).Width = prCompWidth; var obj = map.Indicator; var type = obj.GetType(); string defn = (string)type.GetProperty(FiscalYear.FYStrFull("FY_", fiscalYear) + "Definition_Calculation").GetValue(obj, null); string rationale = (string)type.GetProperty(FiscalYear.FYStrFull("FY_", fiscalYear) + "Target_Rationale").GetValue(obj, null); string comp = (string)type.GetProperty(FiscalYear.FYStrFull("FY_", fiscalYear) + "Comparator_Source").GetValue(obj, null); double maxLines = 1; double lines; if (defn != null) { lines = defn.Length / ws.Column(currentCol).Width; maxLines = maxLines < lines ? lines : maxLines; ws.Cell(currentRow, currentCol).Value = defn; } ws.Cell(currentRow, currentCol).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left; currentCol++; if (rationale != null) { lines = rationale.Length / ws.Column(currentCol).Width; maxLines = maxLines < lines ? lines : maxLines; ws.Cell(currentRow, currentCol).Value = rationale; } ws.Cell(currentRow, currentCol).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left; currentCol++; if (comp != null) { lines = comp.Length / ws.Column(currentCol).Width; maxLines = maxLines < lines ? lines : maxLines; ws.Cell(currentRow, currentCol).Value = comp; } ws.Cell(currentRow, currentCol).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Left; currentCol++; ws.Row(currentRow).Height = newLineHeight * Math.Ceiling(maxLines); currentRow++; } } } var footnoteRow = ws.Range(ws.Cell(currentRow, 1), ws.Cell(currentRow, maxCol)); footnoteRow.Merge(); footnoteRow.Style.Font.FontSize = prFootnoteSize; /*Footnotes defaultFootnote = db.Footnotes.FirstOrDefault(x => x.Footnote_Symbol == "*"); if (!footnotes.Contains(defaultFootnote)) { footnotes.Add(defaultFootnote); }*/ int cellLengthFootnote = 0; if (ws.Name == wsPRName) { foreach (var footnote in footnotes.OrderBy(x=>x.Footnote_Order)) { ws.Cell(currentRow, 1).RichText.AddText(footnote.Footnote_Symbol).VerticalAlignment = XLFontVerticalTextAlignmentValues.Superscript; ws.Cell(currentRow, 1).RichText.AddText(" " + footnote.Footnote + ";"); ws.Cell(currentRow, 1).Style.Alignment.Vertical = XLAlignmentVerticalValues.Top; cellLengthFootnote += footnote.Footnote_Symbol.ToString().Length + footnote.Footnote.ToString().Length + 2; if (cellLengthFootnote > prFootnoteCharsNewLine) { ws.Cell(currentRow, 1).RichText.AddNewLine(); cellLengthFootnote = 0; ws.Row(currentRow).Height += newLineHeight; } } } else { ws.Cell(currentRow, 1).Value = defNote; ws.Row(currentRow).Height = 28; } var pr = ws.Range(ws.Cell(startRow, 1), ws.Cell(currentRow - 1, maxCol)); if (pr.Worksheet.Name == wsDefName) { pr.Style.Border.InsideBorder = prBorderWidth; pr.Style.Border.InsideBorderColor = prBorder; } pr.Style.Border.OutsideBorder = prBorderWidth; pr.Style.Border.OutsideBorderColor = prBorder; pr.Style.Font.FontSize = prFontSize; pr = ws.Range(ws.Cell(startRow, 1), ws.Cell(currentRow, maxCol)); pr.Style.Alignment.Vertical = XLAlignmentVerticalValues.Center; pr.Style.Alignment.WrapText = true; ws.Column(1).Width = prNumberWidth; ws.Column(2).Width = prIndicatorWidth; footnotes.Clear(); indicatorNumber = 1; var totalHeight = ExcelFunctions.getTotalHeight(ws, 4); var totalWidth = ExcelFunctions.getTotalWidth(ws, 1); var fitHeight = (int)(totalWidth / fitRatio); var fitWidth = (int)(totalHeight * fitRatio); if (ws.Name == "Def_WIH Obs") { System.Diagnostics.Debugger.Break(); } if (fitHeight > totalHeight) { var fitAddHeightTotal = (fitHeight - totalHeight); var fitAddHeightPerRow = fitAddHeightTotal / fitAdjustableRows.Count; foreach (var row in fitAdjustableRows) { ws.Row(row).Height += fitAddHeightPerRow; } } else { while ((fitWidth - totalWidth) / fitWidth > 0.001) { var fitAddWidthTotal = (fitWidth - totalWidth) / 10; var fitAddWidthPerRow = fitAddWidthTotal / (ws.LastColumnUsed().ColumnNumber() - 1); foreach (var col in ws.Columns(2, ws.LastColumnUsed().ColumnNumber())) { col.Width += fitAddWidthPerRow / 5.69; } ExcelFunctions.AutoFitWorksheet(ws, 2, 3, newLineHeight); totalHeight = ExcelFunctions.getTotalHeight(ws, 4); totalWidth = ExcelFunctions.getTotalWidth(ws, 1); fitHeight = (int)(totalWidth / fitRatio); fitWidth = (int)(totalHeight * fitRatio); } } } } MemoryStream preImage = new MemoryStream(); wb.SaveAs(preImage); //Aspose.Cells.Workbook test = new Aspose.Cells.Workbook(preImage); //test.Save(this.HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/logo.pdf"), Aspose.Cells.SaveFormat.Pdf); MemoryStream postImage = new MemoryStream(); SLDocument postImageWb = new SLDocument(preImage); string picPath = this.HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/logo.png"); SLPicture picLogo = new SLPicture(picPath); string picPathOPEO = this.HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/logoOPEO.png"); SLPicture picLogoOPEO = new SLPicture(picPathOPEO); string picMonthlyPath = this.HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/Monthly.png"); SLPicture picMonthly = new SLPicture(picMonthlyPath); string picQuaterlyPath = this.HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/quaterly.png"); SLPicture picQuaterly = new SLPicture(picQuaterlyPath); string picNAPath = this.HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/na.png"); SLPicture picNA = new SLPicture(picNAPath); string picTargetPath = this.HttpContext.ApplicationInstance.Server.MapPath("~/App_Data/target.png"); SLPicture picTarget = new SLPicture(picTargetPath); foreach (var ws in wb.Worksheets) { postImageWb.SelectWorksheet(ws.Name); for (int i = 1; i < 20; ++i) { var a = postImageWb.GetRowHeight(i); } picLogo.SetPosition(0, 0); picLogo.ResizeInPercentage(25, 25); postImageWb.InsertPicture(picLogo); picLogoOPEO.SetRelativePositionInPixels(0, ws.LastColumnUsed().ColumnNumber() + 1, -140, 0); picLogoOPEO.ResizeInPercentage(45, 45); postImageWb.InsertPicture(picLogoOPEO); if (ws.Name.Substring(0, 3) != "Def") { picTarget.SetRelativePositionInPixels(ws.LastRowUsed().RowNumber() + 1, ws.LastColumnUsed().ColumnNumber() + 1, -240, 1); picNA.SetRelativePositionInPixels(ws.LastRowUsed().RowNumber() + 1, ws.LastColumnUsed().ColumnNumber() + 1, -400, 1); picMonthly.SetRelativePositionInPixels(ws.LastRowUsed().RowNumber() + 1, ws.LastColumnUsed().ColumnNumber() + 1, -500, 1); picQuaterly.SetRelativePositionInPixels(ws.LastRowUsed().RowNumber() + 1, ws.LastColumnUsed().ColumnNumber() + 1, -490, 1); picMonthly.ResizeInPercentage(70, 70); picQuaterly.ResizeInPercentage(70, 70); picNA.ResizeInPercentage(70, 70); picTarget.ResizeInPercentage(70, 70); postImageWb.InsertPicture(picMonthly); postImageWb.InsertPicture(picQuaterly); postImageWb.InsertPicture(picNA); postImageWb.InsertPicture(picTarget); } } // Prepare the response HttpResponse httpResponse = this.HttpContext.ApplicationInstance.Context.Response; httpResponse.Clear(); httpResponse.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; httpResponse.AddHeader("content-disposition", "attachment;filename=\"test.xlsx\""); //httpResponse.ContentType = "application/pdf"; //httpResponse.AddHeader("content-disposition", "attachment;filename=\"test.pdf\""); // Flush the workbook to the Response.OutputStream using (MemoryStream memoryStream = new MemoryStream()) { postImageWb.SaveAs(memoryStream); memoryStream.WriteTo(httpResponse.OutputStream); memoryStream.Close(); } httpResponse.End(); return View(viewModel); }
public ActionResult viewPRdbl(Int16 fiscalYear, Int16? analystID, Int16 coeID, Int16 coeID2) { var allMaps = new List<Indicator_CoE_Maps>(); if (analystID.HasValue) { allMaps = db.Indicator_CoE_Maps.Where(x => x.Indicator.Analyst_ID == analystID).ToList(); } else { allMaps = db.Indicator_CoE_Maps.ToList(); } var allCoEs = db.CoEs.Where(x => x.CoE_ID == coeID).ToList(); allMaps = allMaps.Where(x => x.CoE.CoE_ID == coeID || x.CoE_ID == 0).ToList(); ModelState.Clear(); var viewModel = new PRViewModel { //allCoEs = db.CoEs.ToList(), allAnalysts = db.Analysts.ToList(), allCoEs = allCoEs, allMaps = allMaps, allIndicators = db.Indicators.ToList(), allFootnoteMaps = db.Indicator_Footnote_Maps.ToList(), allFootnotes = db.Footnotes.ToList(), allAreas = db.Areas.ToList(), Fiscal_Year = fiscalYear, Analyst_ID = analystID, allColors = db.Color_Types.ToList(), allDirections = db.Color_Directions.ToList(), allThresholds = db.Color_Thresholds.ToList(), allFormats = db.Formats.ToList(), coeID2= coeID2 }; return View(viewModel); }
public ActionResult viewPR(Int16 fiscalYear, Int16? analystID, Int16? coeID) { var allMaps = new List<Indicator_CoE_Maps>(); if (analystID.HasValue) { allMaps = db.Indicator_CoE_Maps.Where(x => x.Indicator.Analyst_ID == analystID).ToList(); } else { allMaps = db.Indicator_CoE_Maps.ToList(); } var allCoEs = new List<CoEs>(); if (coeID.HasValue) { allCoEs = db.CoEs.Where(x => x.CoE_ID == coeID).ToList(); allMaps = allMaps.Where(x => x.CoE.CoE_ID == coeID || x.CoE_ID == 0).ToList(); } else { allCoEs = db.CoEs.Where(x=>x.CoE_ID != 0).ToList(); } ModelState.Clear(); var obj = allCoEs.FirstOrDefault(); var type = obj.GetType(); //var test = type.GetProperty(FiscalYear.FYStrFull("FY_", fiscalYear) + "Draft").GetValue(obj, null) == null; var isDraft = (bool)(type.GetProperty(FiscalYear.FYStrFull("FY_",fiscalYear) + "Draft").GetValue(obj,null) ?? false); var viewModel = new PRViewModel { //allCoEs = db.CoEs.ToList(), allAnalysts = db.Analysts.ToList(), allCoEs = allCoEs, allMaps = allMaps, allFootnoteMaps = db.Indicator_Footnote_Maps.ToList(), allFootnotes = db.Footnotes.ToList(), allAreas = db.Areas.ToList(), Fiscal_Year = fiscalYear, Analyst_ID = analystID, allColors = db.Color_Types.ToList(), allDirections = db.Color_Directions.ToList(), allThresholds = db.Color_Thresholds.ToList(), allFormats = db.Formats.ToList(), allIndicators = null, isDraft = isDraft }; return View(viewModel); }