在 PowerPoint 中更新图表数据

Update Chart data in PowerPoint

我正在通过加载模板和更新数据并另存为新副本来创建 PowerPoint。为此,我使用 GemBox.Presentation 和 GemBox.SpreadSheet。我可以使用电子表格访问图表数据,但我不确定如何更新它。
以下是我如何从模板幻灯片访问图表。

var chart = ((GraphicFrame)currentSlide.Content.Drawings[0]).Chart;
var stackedColumn = (GemBox.Spreadsheet.Charts.ColumnChart)chart.ExcelChart;

我尝试通过转换为列表来更新数据,但它仍然没有更新。

foreach (var item in data)
{
     var seriesItem = data;
     var valueList = item.Values.Cast<int>().Select(x => x).ToList();
     
    // values to update in chart
     List<int> myValues = new List<int>(new int[] { 1, 2});

     for (int v = 0; v < valueList.Count(); v++)
     {
        valueList[v] = myValues[v];
     }
}

我也看到了这个示例 https://www.gemboxsoftware.com/presentation/examples/powerpoint-charts/412 来更新图表,但是这会添加系列但不会更新当前数据。 如果您可以分享是否有任何支持可用于此组件以执行更新图表数据,我们将不胜感激。谢谢

我已成功更新电子表格中与 powerpoint 图表关联的数据。

Class 名为 ChartSeries 的方法包含名为 SetValues() 的方法,该方法将设置图表系列值。 有两种方法可以使用此方法,因为它需要 IEnumerableObject [] 作为参数,如下所示。

public void SetValues(IEnumerable values)

public void SetValues(params object[] values)

这是我访问该值并更新它的方式。

foreach (var item in data)
 {
  var seriesItem = data;
  foreach (var value in seriesItem)
    {
      if (value.DisplayName == "[Open]")
       {
         value.SetValues(50,25);
       }
    }
}                              

一种方法是使用 ChartSeries.SetValues 方法之一,如上一个答案所述。

另一种方法是更新带下划线的 Excel 单元格。
例如,在您链接到的那个例子中,您可以这样做:

var lineChart = (LineChart)chart.ExcelChart;
var lineSeries = lineChart.Series[0];

// Get series source cells.
string[] cellsReference = lineSeries.ValuesReference.Split('!');
var cells = lineChart.Worksheet.Parent.Worksheets
    .First(w => w.Name == cellsReference[0].Trim('\''))
    .Cells.GetSubrange(cellsReference[1]);

// Update cells with doubled values.
foreach (var cell in cells)
    cell.SetValue(cell.DoubleValue * 2);