gpt4 book ai didi

excel - EPPlus 条形图条在 Excel 2013 中不显示负值的颜色,但在 Excel 2007 中工作正常

转载 作者:行者123 更新时间:2023-12-02 17:04:21 26 4
gpt4 key购买 nike

我正在使用 C# 中的 EPPlus for Excel 包来使用 BarClustered 图表。我能够根据需要生成条形图。我面临的唯一问题是,当我有负值时,条形图不显示任何颜色。这就像一个只有边框的透明条。

我在使用 Excel 2013 时遇到了这个问题。但是这在 Excel 2007 中工作正常。

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"
}

下面是使用 Excel 2013 打开时得到的负值图像。

Excel 2013 graph(This is not the graph for the sample data I provided)

最佳答案

EPPlus 似乎不支持数据系列的“invertIfNegative”标签。您可能需要联系作者寻求帮助,或者自己添加该功能。 Open XML 规范指出:

This element specifies the parent element shall invert its colors if the value is negative.

另外:

A value of on, 1, or true specifies that the property is applied. This is the default value for this attribute, and is implied when the parent element is present, but this attribute is omitted.

由于 EPPlus 不呈现此标记,因此使用默认值“true”。本例中的“父元素”是数据系列 XML 元素。因此,这意味着如果单元格值为负,颜色将会反转。因此您看到的是透明颜色。

我发现不同版本的 Excel 遵循的 Open XML 规范略有不同。 Excel 2013 似乎更严格地遵守 Open XML 规范,这就是您获得透明颜色的原因。 Excel 2007 可能忽略了不存在的“invertIfNegative”标签(意味着如果不存在,您不希望与反转颜色等有任何关系,因此 Excel 将只渲染颜色)。从这个意义上说,Excel 2007 更能容忍错误,这可能是好事,也可能不是好事。

关于excel - EPPlus 条形图条在 Excel 2013 中不显示负值的颜色,但在 Excel 2007 中工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17404294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com