c# - 如何使用 EPPlus 创建具有多个系列的图表?

标签 c# excel charts epplus

我正在尝试使用 EPPlus 创建此图表:

Area            Imports         Exports
North America   9.00010837      14.54751448
South America   7.878137347     4.878011063
Europe          32.41924303     39.37317481
Middle East     6.859031587     12.94288951
Africa          7.611513341     2.938054884
Asia            36.23196633     25.32035526

结果应该是这样的:

Excel Column clustered chart

这是我的代码:

dataSheet.Cells["A1"].Value = "Area";
dataSheet.Cells["B1"].Value = "Imports";
dataSheet.Cells["C1"].Value = "Exports";

var row = 2;
foreach (var item in items)
{
    dataSheet.Cells["A" + row].Value = item.GeographicalAreaPersianName;
    dataSheet.Cells["B" + row].Value = item.ImportsShare;
    dataSheet.Cells["C" + row].Value = item.ExportsShare;
    row++;
}


var diagram = diagramSheet.Drawings.AddChart("chart", eChartType.ColumnClustered);

for (int i = 2; i <= row; i++)
{
    var series = diagram.Series.Add($"'Data'!B{i}:C{i}", $"'Data'!A{i}:A{i}");
}
diagram.Border.Fill.Color = System.Drawing.Color.Green;

然而我得到的是这个结果:

Excel Column clustered chart

如您所见,系列标题未正确显示,我在 EPPlus 中找不到合适的帮助。我该如何纠正这个问题?

最佳答案

假设数据的存储方式如下图所示:

excel data

以下应该可以解决问题:

var diagram = worksheet.Drawings.AddChart("chart", eChartType.ColumnClustered);

for (int i = 2; i <= row; i++)
 {
  var series = diagram.Series.Add($"B{i}:C{i}", "B1:C1");
  series.Header = worksheet.Cells[$"A{i}"].Value.ToString();
 }
diagram.Border.Fill.Color = System.Drawing.Color.Green;

Add方法的第二个参数代表系列标题{"Imports", "Exports"}

对于区域,您必须设置标题。

结果图表如下所示:(上述代码的实际结果):

excel column clustered chart

关于c# - 如何使用 EPPlus 创建具有多个系列的图表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48056329/

相关文章:

c# - 通过 OleDb c# 在 Excel 中插入回车符

javascript - 谷歌图表不会在顶部对齐

c# - 使用加权值随机执行操作

c# - 具有混合类型的 TreeView HierarchicalDataTemplate

c# - 在 C# 中的窗体之间来回传递参数

excel - 单元格为空,但 IsEmpty 不起作用

excel - 哪个最快的方法来求和两个范围?

c# - 我应该使用哪个 .net 图表库?

charts - 如何在chartjs中将起始值设置为 "0"?

c# - 我的项目中的接口(interface)实现