使用Interop将一个旧的VBA项目迁移到C#以操作Powerpoint,并设法复制一些旧的解决方案
我可以通过以下方式获得我的系列收藏:
NetOffice.PowerPointApi.Series test_sc = (NetOffice.PowerPointApi.Series)sh.Chart.SeriesCollection(1);
但是试图访问这些值或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机制更新基础表,但这是一个复杂的事实,因为这个系列并不总是使用工作表中的相同单元格范围,这取决于源文件,因此我不能简单地将旧的SeriesCollection1.Values 1值映射到范围“b2..m2”或其他任何东西。
1我是不是遗漏了一些显而易见的东西(c#不是我通常的平台,所以很有可能)来获得对集合的值/XValues的读/写访问权?还有更好的方法可以让我相对访问该系列所代表的底层范围吗?
发布于 2022-03-09 20:53:40
要更新值(在值轴上),您应该能够这样做,例如使用一个双数组:
double[] someNewValues = {6,3,4,7,3};
PowerPoint.Series ser = chart.SeriesCollection(1);
ser.Values=someNewValues;根据我的经验,在类别轴(即ser.XValues)上更新值可能更棘手。如果它是一个散点图,它似乎不工作双值,但转换为浮动对我有效。
https://stackoverflow.com/questions/68437367
复制相似问题