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));
        }
示例#2
0
        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);
        }