read/write Values/XValues 在 SeriesCollection 中

read/write Values/XValues in a SeriesCollection

使用 Interop 将一个旧的 VBA 项目迁移到 C# 来操作 Powerpoint,并试图找到一种方法来复制一些旧的解决方案

我可以使用以下方法获得我的系列 Collection:

NetOffice.PowerPointApi.Series test_sc = (NetOffice.PowerPointApi.Series)sh.Chart.SeriesCollection(1);

但是尝试访问 Values 或 XValues 没有像我预期的那样工作

我可以使用任一方法获取内容

string[] arr = ((IEnumerable)test_sc.Values).Cast<object>()
                       .Select(x => x.ToString())
                       .ToArray();

foreach (object item in (Array)test_sc.Values) { var aa = item;  }

但这不允许我更新内容。

现在我正在使用 ChartData.WorkBook.Worksheet.Cells.get_Range 机制来更新底层 sheet 但由于该系列在工作中并不总是使用相同的单元格范围,所以这很复杂 sheet 取决于源文件,所以我不能简单地将旧 SeriesCollection[1].Values 映射到 Range["b2..m2"] 或其他任何东西。

1/ 我是否遗漏了一些明显的东西(c# 不是我常用的平台,所以很有可能)以获得 read/write 访问 Values/XValues 的 collection 和 2/ 有没有更好的方法可以让我相对访问该系列所代表的基础范围

要更新值(在值轴上),您应该能够通过例如双数组:

double[] someNewValues = {6,3,4,7,3};
PowerPoint.Series ser = chart.SeriesCollection(1);
ser.Values=someNewValues;

根据我的经验,更新类别轴上的值(即 ser.XValues)可能更棘手。如果它是散点图,它似乎不适用于双精度值,但转换为浮点数对我有用。