public void AddPieChart() { var excelManager = new JlgCommon.ExcelManager.ExcelManager(); var chartName = "Costs share per department"; var pieChart = new PieChartForExcel(); pieChart.ChartName = chartName; pieChart.ColumnName = "Department"; pieChart.ColumnValue = "Cost"; pieChart.Values.Add(new StringDoublePair("Research", 3500)); pieChart.Values.Add(new StringDoublePair("Development", 15000.37)); pieChart.Values.Add(new StringDoublePair("Marketing", 8000)); excelManager.Writer.AddPieChart(pieChart, 1, 100, 100); Assert.AreEqual(chartName, excelManager.Reader.GetCellValueAsString(1, 1)); Assert.AreEqual("Department", excelManager.Reader.GetCellValueAsString(2, 1)); Assert.AreEqual("Cost", excelManager.Reader.GetCellValueAsString(2, 2)); //This is the order because the pie chart sorts the shares descending Assert.AreEqual("Development", excelManager.Reader.GetCellValueAsString(3, 1)); Assert.AreEqual(15000.37, excelManager.Reader.GetCellValueAsDouble(3, 2)); Assert.AreEqual("Marketing", excelManager.Reader.GetCellValueAsString(4, 1)); Assert.AreEqual(8000, excelManager.Reader.GetCellValueAsDouble(4, 2)); Assert.AreEqual("Research", excelManager.Reader.GetCellValueAsString(5, 1)); Assert.AreEqual(3500, excelManager.Reader.GetCellValueAsDouble(5, 2)); }
public int AddPieChart(PieChartForExcel pieChart, int startingRow, double width, double height, bool?sortDescending = true, int startingColumn = 1) { if (sortDescending.HasValue) { if (sortDescending.Value) { pieChart.Values = pieChart.Values.OrderByDescending(x => x.Value).ToList(); } else { pieChart.Values = pieChart.Values.OrderBy(x => x.Value).ToList(); } } var forcedLastElement = pieChart.Values.FirstOrDefault(x => x.IsForcedLastElementForPieCharts); if (forcedLastElement != null) { pieChart.Values.Remove(forcedLastElement); pieChart.Values.Add(forcedLastElement); } if (!string.IsNullOrEmpty(pieChart.ChartName)) { _excelDocument.SetCellValue(startingRow, startingColumn, pieChart.ChartName); _excelDocument.SetCellBold(startingRow, startingColumn); _excelDocument.SetCellItalic(startingRow, startingColumn); startingRow++; } _excelDocument.SetCellValue(startingRow, startingColumn, pieChart.ColumnName); _excelDocument.SetCellBold(startingRow, startingColumn); _excelDocument.SetCellValue(startingRow, startingColumn + 1, pieChart.ColumnValue); _excelDocument.SetCellBold(startingRow, startingColumn + 1); for (int i = 0; i < pieChart.Values.Count; i++) { var row = startingRow + i + 1; _excelDocument.SetCellValue(row, startingColumn, pieChart.Values[i].Name); _excelDocument.SetCellValue(row, startingColumn + 1, pieChart.Values[i].Value); _excelDocument.SetCellHorizoltalAllign(row, startingColumn + 1, HorizontalAlignmentType.Left); } var chart = _excelDocument.CreateChart(startingRow, startingColumn, startingRow + pieChart.Values.Count, startingColumn + 1); chart.SetChartType(SLPieChartType.Pie); chart.SetChartPosition(startingRow - 1, startingColumn + 1, startingRow + height, startingColumn + width); _excelDocument.InsertChart(chart); int max = pieChart.Values.Count; int heightInt = Convert.ToInt32(height); if (max < heightInt) { max = heightInt; } return(startingRow + max + 1); }