1
EPPLUS 원형 차트에서 백분율은 기본적으로 자동으로 반올림되며 프로그래밍 방식으로 소수점 2 자리 (11 대신 10.75)로 표시 할 수 있습니까?Epplus 원형 차트에 소수점 이하로 백분율을 표시하는 방법은 무엇입니까?
필자는 값 (정수)만을 제공하며 백분율은 구성 요소에 의해 자동으로 계산됩니다.
EPPLUS 원형 차트에서 백분율은 기본적으로 자동으로 반올림되며 프로그래밍 방식으로 소수점 2 자리 (11 대신 10.75)로 표시 할 수 있습니까?Epplus 원형 차트에 소수점 이하로 백분율을 표시하는 방법은 무엇입니까?
필자는 값 (정수)만을 제공하며 백분율은 구성 요소에 의해 자동으로 계산됩니다.
EPPlus에서 옵션을 실제로 설정하지 마십시오. Serie.DataLabel
개체에 있어야합니다.
XML을 통해 수행되어야하는 것처럼 보입니다. 여기에 그것을 수행하는 방법의 예입니다 (다른 차트 유형 불통해야 할 수도 있습니다) :
: 출력이 있습니다[TestMethod]
public void PieChartDataLabelPercent()
{
//http://stackoverflow.com/questions/42393711/how-to-display-percentages-with-decimals-in-an-epplus-pie-chart
var file = new FileInfo(@"c:\temp\PieChartDataLabelPercent.xlsx");
if (file.Exists)
file.Delete();
var pck = new ExcelPackage(file);
var workbook = pck.Workbook;
var worksheet = workbook.Worksheets.Add("newsheet");
var rand = new Random();
var data = new List<KeyValuePair<string, int>>();
for (var i = 0; i < 10; i++)
data.Add(new KeyValuePair<string, int>($"Group {i}", rand.Next(10, 100)));
//Fill the table
var startCell = worksheet.Cells[1, 1];
startCell.Offset(0, 0).Value = "Group Name";
startCell.Offset(0, 1).Value = "Group Value";
startCell.Offset(1, 0).LoadFromCollection(data);
//Add the chart to the sheet
var pieChart = worksheet.Drawings.AddChart("Chart1", eChartType.Pie);
pieChart.SetPosition(data.Count + 1, 0, 0, 0);
pieChart.SetSize(500, 400);
pieChart.Title.Text = "Test Chart";
//Set the data range
var series = pieChart.Series.Add(worksheet.Cells[2, 2, data.Count + 1, 2], worksheet.Cells[2, 1, data.Count + 1, 1]);
var pieSeries = (ExcelPieChartSerie)series;
pieSeries.Explosion = 5;
//Format the labels
pieSeries.DataLabel.ShowValue = true;
pieSeries.DataLabel.ShowPercent = true;
pieSeries.DataLabel.ShowLeaderLines = true;
pieSeries.DataLabel.Separator = "; ";
pieSeries.DataLabel.Position = eLabelPosition.BestFit;
var xdoc = pieChart.ChartXml;
var nsuri = xdoc.DocumentElement.NamespaceURI;
var nsm = new XmlNamespaceManager(xdoc.NameTable);
nsm.AddNamespace("c", nsuri);
//Added the number format node via XML
var numFmtNode = xdoc.CreateElement("c:numFmt", nsuri);
var formatCodeAtt = xdoc.CreateAttribute("formatCode", nsuri);
formatCodeAtt.Value = "0.00%";
numFmtNode.Attributes.Append(formatCodeAtt);
var sourceLinkedAtt = xdoc.CreateAttribute("sourceLinked", nsuri);
sourceLinkedAtt.Value = "0";
numFmtNode.Attributes.Append(sourceLinkedAtt);
var dLblsNode = xdoc.SelectSingleNode("c:chartSpace/c:chart/c:plotArea/c:pieChart/c:ser/c:dLbls", nsm);
dLblsNode.AppendChild(numFmtNode);
//Format the legend
pieChart.Legend.Add();
pieChart.Legend.Position = eLegendPosition.Right;
pck.Save();
}
을