【问题标题】:OpenXML SDK PowerPoint set chart colorOpenXML SDK PowerPoint 设置图表颜色
【发布时间】: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


    【解决方案1】:

    我不确定这是否适用于 VB.NET 和 OpenXML,但在 PPT 对象模型中,仍支持方案颜色以保持与 2007 年前版本的 PowerPoint 的兼容性。新版本使用颜色主题,而不是方案。 (是的,我知道。欢迎来到 PowerPoint 的 BizarroWorld)。

    在 VBA 中,您可以使用类似的方法将 oSh 引用的形状的填充颜色设置为当前颜色主题中的 Accent Color 2。

    oSh.Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent2

    【讨论】:

      猜你喜欢
      • 2023-01-05
      • 2016-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-21
      相关资源
      最近更新 更多