3
A
回答
4
這裏就是OP鏈接到註釋代碼的改進版本。這個版本在顏色傳給你想要的(而不是它只是使用隨機的),以SetChartPointsColor
,它將會把所有點的顏色相同,以及創建和圖例條目:
public static void SetChartPointsColor(this ExcelChart chart, int serieNumber, Color color)
{
var chartXml = chart.ChartXml;
var nsa = chart.WorkSheet.Drawings.NameSpaceManager.LookupNamespace("a");
var nsuri = chartXml.DocumentElement.NamespaceURI;
var nsm = new XmlNamespaceManager(chartXml.NameTable);
nsm.AddNamespace("a", nsa);
nsm.AddNamespace("c", nsuri);
var serieNode = chart.ChartXml.SelectSingleNode(@"c:chartSpace/c:chart/c:plotArea/c:barChart/c:ser[c:idx[@val='" + serieNumber + "']]", nsm);
var serie = chart.Series[serieNumber];
var points = serie.Series.Length;
//Add reference to the color for the legend and data points
var srgbClr = chartXml.CreateNode(XmlNodeType.Element, "srgbClr", nsa);
var att = chartXml.CreateAttribute("val");
att.Value = $"{color.R:X2}{color.G:X2}{color.B:X2}";
srgbClr.Attributes.Append(att);
var solidFill = chartXml.CreateNode(XmlNodeType.Element, "solidFill", nsa);
solidFill.AppendChild(srgbClr);
var spPr = chartXml.CreateNode(XmlNodeType.Element, "spPr", nsuri);
spPr.AppendChild(solidFill);
serieNode.AppendChild(spPr);
}
使用方法如下此:
using (var pck = new ExcelPackage(fileInfo))
{
var workbook = pck.Workbook;
var worksheet = workbook.Worksheets.Add("Sheet1");
worksheet.Cells.LoadFromDataTable(datatable, true);
var chart = worksheet.Drawings.AddChart("chart test", eChartType.ColumnStacked);
chart.Series.Add(worksheet.Cells["B2:B11"], worksheet.Cells["A2:A11"]);
chart.Series.Add(worksheet.Cells["C2:C11"], worksheet.Cells["A2:A11"]);
var rand = new Random();
var color = Color.FromArgb(rand.Next(256), rand.Next(256), rand.Next(256));
chart.SetChartPointsColor(0, color);
color = Color.FromArgb(rand.Next(256), rand.Next(256), rand.Next(256));
chart.SetChartPointsColor(1, color);
pck.Save();
}
給出了這樣的在輸出:
RESPONSE將註釋
對於線系列這將是一個有點不同:
public static void SetLineChartColor(this ExcelChart chart, int serieNumber, Color color)
{
var chartXml = chart.ChartXml;
var nsa = chart.WorkSheet.Drawings.NameSpaceManager.LookupNamespace("a");
var nsuri = chartXml.DocumentElement.NamespaceURI;
var nsm = new XmlNamespaceManager(chartXml.NameTable);
nsm.AddNamespace("a", nsa);
nsm.AddNamespace("c", nsuri);
var serieNode = chart.ChartXml.SelectSingleNode([email protected]"c:chartSpace/c:chart/c:plotArea/c:lineChart/c:ser[c:idx[@val='{serieNumber}']]", nsm);
var serie = chart.Series[serieNumber];
var points = serie.Series.Length;
//Add reference to the color for the legend
var srgbClr = chartXml.CreateNode(XmlNodeType.Element, "srgbClr", nsa);
var att = chartXml.CreateAttribute("val");
att.Value = $"{color.R:X2}{color.G:X2}{color.B:X2}";
srgbClr.Attributes.Append(att);
var solidFill = chartXml.CreateNode(XmlNodeType.Element, "solidFill", nsa);
solidFill.AppendChild(srgbClr);
var ln = chartXml.CreateNode(XmlNodeType.Element, "ln", nsa);
ln.AppendChild(solidFill);
var spPr = chartXml.CreateNode(XmlNodeType.Element, "spPr", nsuri);
spPr.AppendChild(ln);
serieNode.AppendChild(spPr);
}
+0
謝謝,這太棒了!後續問題:這如何工作的線圖?我更新了xml以選擇「c:barChart /」,但它不會更改默認顏色。 – user1854458
+0
@ user1854458查看我上面的編輯。 – Ernie
相關問題
- 1. 用EPPlus編輯excel圖表的圖例
- 2. AnyMaps的圖例項目不使用正確的圖標顏色
- 3. EPPlus如何更改EXCEL中的PIE圖表顏色
- 4. 如何使用Crystal Reports中圖表的顏色創建自定義圖例表?
- 5. Matlab - 繪圖的圖例顯示不正確的顏色
- 6. Matplotlib中相交透明圖層的正確圖例顏色
- 7. geom_hline的顏色在圖例中不正確[ggplot2]
- 8. JavaFX StackedBarChart圖例顏色不遵循圖表顏色CSS樣式
- 9. 用android中的顏色創建圖像
- 10. Winform中MS圖表顏色和圖例
- 11. EPPlus條形圖欄在Excel 2013中不顯示負值的顏色,但在Excel 2007中正常工作
- 12. Dojox標記的圖例顏色不正確
- 13. C#圖像繪製顏色不正確
- 14. Safari 6圖像顏色不正確
- 15. 無法使用正確的顏色設置PIL保存創建的圖像
- 16. 如何使用ggplotly爲顏色和形狀創建圖例
- 17. 使用手動形狀和顏色創建圖例
- 18. 用pygame/pyglet從數組重建圖像時顏色不正確
- 19. 圖例顏色不顯示
- 20. Matplotlib表函數中的圖例顏色?
- 21. 使用不同的顏色在圖表
- 22. 如何在VC++中使用不同顏色創建BitMap圖像?
- 23. 更改MVC圖表(圖例)顏色
- 24. 使用EPPlus庫檢查Excel文件的背景顏色
- 25. 用Java創建Excel圖表
- 26. 使用張量流創建圖像的顏色直方圖
- 27. 使用Image Magick創建帶固定顏色圖的GIF圖像
- 28. PHP - 顏色不正確使用imagecopy的
- 29. ggplot2:如何使用scale_xx_manual創建正確的圖例
- 30. 構建不正確的線條顏色
可能要張貼您使用的代碼。 – Ernie
我使用的是這篇文章中的代碼,似乎作者沒有考慮圖例的顏色。 http://stackoverflow.com/questions/34356874/epplus-columnstacked-chart-data-point-colors – user1854458