Epplus Ошибка баров на графиках
Используя Epplus, есть ли способ добавить бары ошибок в серию графиков?
Я не нашел никаких упоминаний о том, что Epplus может обрабатывать полосы ошибок нигде, и в диаграмме или в отдельных сериях нет ни свойств, ни методов, которые бы указывали на то, что вы можете получить доступ к / создавать панели ошибок.
Я пытаюсь воссоздать эту диаграмму, из которой все, что я оставил, является барами ошибок:
1 ответ
Я не нашел способа добавить панели ошибок с помощью Epplus, поэтому вместо этого я просто открыл файл в обычном взаимодействии и добавил их через это:
Excel.Application app = new Excel.Application();
Excel.Workbook workbook = app.Workbooks.Open(filename);
Excel.Worksheet sheet = workbook.Worksheets[1];
Excel.Chart graph = sheet.ChartObjects("Per Employee Average (Run)").Chart;
Excel.Series series = graph.SeriesCollection("Employee Average");
Excel.Range range = sheet.get_Range(Range.Column(cRange.BackStdDev) + 2 + ":" + Range.Column(cRange.BackStdDev) + Range.Row(rRange.RunBackEnd));
series.ErrorBar(Excel.XlErrorBarDirection.xlX, Excel.XlErrorBarInclude.xlErrorBarIncludeBoth, Excel.XlErrorBarType.xlErrorBarTypeCustom, range, range);
Я отправил запрос на вытягивание с соответствующим кодом для обработки полос ошибок в EPPlus, но если кому-то нужно сделать это до того, как это будет принято, вы можете сделать это вручную с помощью кода, например:
public static void AddErrorBars(ExcelBarChart chart, string customFullRange)
{
var nsmgr = new XmlNamespaceManager(chart.ChartXml.NameTable);
nsmgr.AddNamespace("c", "http://schemas.openxmlformats.org/drawingml/2006/chart");
nsmgr.AddNamespace("a", "http://schemas.openxmlformats.org/drawingml/2006/main");
nsmgr.AddNamespace("r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships");
nsmgr.AddNamespace("c16r2", "http://schemas.microsoft.com/office/drawing/2015/06/chart");
XNamespace ns_c = "http://schemas.openxmlformats.org/drawingml/2006/chart";
XNamespace ns_a = "http://schemas.openxmlformats.org/drawingml/2006/main";
var xDoc = XDocument.Parse(chart.ChartXml.InnerXml);
var cSer = xDoc.XPathSelectElement("/c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser", nsmgr);
cSer.Add(
new XElement(ns_c + "errBars",
new XElement(ns_c + "errBarType",
new XAttribute("val", "plus")
),
new XElement(ns_c + "errValType",
new XAttribute("val", "cust")
),
new XElement(ns_c + "noEndCap",
new XAttribute("val", "0")
),
new XElement(ns_c + "plus",
new XElement(ns_c + "numRef",
new XElement(ns_c + "f", customFullRange)
)
)
)
);
chart.ChartXml.LoadXml(xDoc.ToString());
}