添加带有图例的图表元素数据 table

Add chart element Data table with legend

我们可以使用 EPPlus 在 excel sheet 中生成图表。需要添加带有图例的图表元素 >> Data table。有什么方法可以使用 EPPlus 添加这个吗? You can review the chart that I am looking for here

EPPlus 不支持向图表添加数据 table。您可以通过一些 XML 操作很容易地打开它,但是如果您想要设置它的样式,您将需要更多地了解它。最好按照您喜欢的方式创建图表,将其保存并以 ZIP 文件形式打开 XLSX 并查看图表 XML.

这是显示默认数据 Table 和 Legend 以帮助您入门的方式:

using (var pck = new ExcelPackage(fileInfo))
{
    var workbook = pck.Workbook;
    var worksheet = workbook.Worksheets.Add("Sheet1");
    worksheet.Cells.LoadFromDataTable(datatable, true);

    //Assume some data range
    var chart = worksheet.Drawings.AddChart("chart test", eChartType.Area);
    var series = chart.Series.Add(worksheet.Cells["B2:B11"], worksheet.Cells["A2:A11"]);

    //Get reference to the worksheet xml for proper namespace
    var chartXml = chart.ChartXml;
    var nsuri = chartXml.DocumentElement.NamespaceURI;
    var nsm = new XmlNamespaceManager(chartXml.NameTable);
    nsm.AddNamespace("default", nsuri);

    //Add the table node
    var plotAreaNode = chartXml.SelectSingleNode("/default:chartSpace/default:chart/default:plotArea", nsm);
    var dTableNode = chartXml.CreateNode(XmlNodeType.Element, "dTable", nsuri);
    plotAreaNode.AppendChild(dTableNode);

    //With Legend Flag
    var att = chartXml.CreateAttribute("val");
    att.Value = "1";

    var showKeysNode = chartXml.CreateNode(XmlNodeType.Element, "showKeys", nsuri);
    showKeysNode.Attributes.Append(att);
    dTableNode.AppendChild(showKeysNode);

    pck.Save();
}