Quantcast
Channel: EPPlus Issue Tracker Rss Feed
Viewing all articles
Browse latest Browse all 2262

Commented Unassigned: EPPlus Barchart bars not showing colors for negative value in Excel 2013, but works fine in Excel 2007 [14874]

$
0
0
I am using a BarClustered chart using EPPlus for Excel Package in C#. I am able to generate the bar chart as required. Only problem I am facing is that when I have a negative value, the bar does not show any color. It would be as if a transparent bar with only the border.

I am facing this issue with Excel 2013. However this works fine in Excel 2007.
I am using EPPlus version 3.0.0.2

ExcelWorksheet wsDataSource = xlPackage.Workbook.Worksheets.Add("DataSource");
wsDataSource.Hidden = eWorkSheetHidden.VeryHidden;
var namedStyle = xlPackage.Workbook.Styles.CreateNamedStyle("HyperLink");
namedStyle.Style.Font.UnderLine = true;
namedStyle.Style.Font.Color.SetColor(Color.Blue);

//Here I iterate through an array and populate the wsDataSource values as below starting from 3rd row:
Feb 2000 5000
March -2000 2770
April 4000 4643

var chart = worksheet.Drawings.AddChart("Chart", OfficeOpenXml.Drawing.Chart.eChartType.BarClustered);
//row is the offset int variable
chart.SetPosition(row + 2, 0, 0, 10);
chart.SetSize(750, 30);
chart.Title.Text = "Data Graph";
chart.Legend.Position = eLegendPosition.Top;
var barChart = chart as ExcelBarChart;
barChart.DataLabel.ShowValue = true;

var mySeries = chart.Series.Add(wsDataSource.Cells[3, 2, intDataRow - 1, 2], wsDataSource.Cells[3, 1, intDataRow - 1, 1]);
mySeries.Header = "Current Year";

//isPreviousYearDataAvailable is a boolean which indicates if previous year data for the user is available.
if (isPreviousYearDataAvailable)
{
var mySeries2 = chart.Series.Add(wsDataSource.Cells[3, 3, intDataRow, 3], wsDataSource.Cells[3, 1, intDataRow - 1, 1]);
mySeries2.Header = "Previous Year"
}

I have attached an image of what i get in Excel 2013.(PS. the attached image is not for the sample data)
Comments: Confirmed. Compared EPPlus xml to Excel XML and found: c:chartSpace > c:chart > c:plotArea > c:barChart > c:ser > c:invertIfNegative is 1 in EPPlus. It is 0 in Excel XML. I only find a reference to this in ExcelChartSerie.cs line 61: ``` SchemaNodeOrder = new string[] { ... ,"invertIfNegative" ...} ``` I can't find where it is being set to a default of 1, perhaps Excel is doing this? If so, should we check for BarChart type in the ExcelChartSerie constructor and manually set this to 0?

Viewing all articles
Browse latest Browse all 2262

Trending Articles