【发布时间】:2016-10-06 09:02:30
【问题描述】:
我正在为 VB.NET 网页编写一个模块,它从数据库中获取值并将它们插入到 Office 文档中。使用 Visual Studio 中的 Open XML SDK,我设法修改了 Excel 和 PowerPoint 文件,但 PowerPoint 图表的颜色存在问题:
如何使用 Open XML SDK 更改 PowerPoint 图表的颜色,而不使颜色与主题分开?
详情如下。
将我的值添加到图表后面的工作表并更新视觉线条/条后,所有系列似乎都使用相同的颜色。因此我还需要在图表中设置系列的颜色。我目前使用以下代码执行此操作:
Dim barChart1 As DocumentFormat.OpenXml.Drawing.Charts.BarChart = chartPart.ChartSpace.Descendants(Of BarChart).First
Dim barChartSeries = barChart1.Descendants(Of BarChartSeries).ToList
barChartSeries(0).ChartShapeProperties.Descendants(Of SolidFill).First.SchemeColor = New SchemeColor() With
{ .Val = DocumentFormat.OpenXml.Drawing.SchemeColorValues.Accent4}
基本上,我将图表中的第一个条形设置为使用 Accent4 作为其颜色。 Accent1、2、3 等对应于 PowerPoint 演示文稿主题的调色板中的颜色。此代码运行后,图表的第一个条形将使用当前调色板的第四种颜色。
我面临的问题是用代码设置颜色后,颜色值似乎与实际的主题颜色分开保存。
如果我打开 PowerPoint 文件并更改主题,所有颜色都会更改除了我修改的颜色。在本例中,图表的第一个条形将保留前一个主题的第四种颜色,而不是使用新主题的第四种颜色。
这成为一个问题,因为我公司的客户应该能够将主题更改为更适合他们的主题,但如果有些颜色粘住,他们就不能轻易做到。
我使用的是 Accent 颜色,因为替代方法似乎是设置一个实际的 RGB 颜色值,这会导致同样的问题。我试过 Eric White 的 PowerTools 插件,它简化了更新图表的过程,但似乎并没有解决颜色问题。我可能用错了,但我一直找不到有关如何调试颜色问题的具体信息。
提前感谢您的帮助。
【问题讨论】:
标签: charts colors powerpoint openxml-sdk