WPS 演示 JSAPI:`Series.Values` 数组赋值不生效,执行不报错但数据保持原值

问题描述

在 WPS 演示中,通过 JSAPI 修改图表系列数据时,调用:

chart.SeriesCollection(1).Values = [4.3, 2.5, 5, 4.5];

代码执行过程不会抛出异常,但随后再次读取 SeriesCollection(1).Values,数据仍然保持修改前的值,图表显示也没有变化。

官方文档中 Series.Values 标注为可读写,因此想确认当前 WPS 演示中该属性的写入能力是否正常支持。

WPS 官方开放平台的 WPP JSAPI 文档中,Series.Values 被明确描述为:

“返回或设置系列中所有值的集合。可读/写 Variant 类型。”

官方文档同时提供了直接通过数组为系列数据赋值的示例:

shape.Chart.SeriesCollection(3).Values = [1, 2, 3, 4]

官方文档地址:

https://open.wps.cn/documents/app-integration-dev/wps365/client/wpsoffice/jsapi/wpp/Series/member/Values

因此本次复现使用的:

chart.SeriesCollection(1).Values = [4.3, 2.5, 5, 4.5];

与官方文档提供的使用方式一致。

但实际测试中,该赋值语句不会抛出异常,随后读取 Series.Values 时仍然返回原始值,图表数据也没有变化。

实际现象

例如图表第一个系列原始数据为:

[4.3, 2.5, 3.5, 4.5]

执行:

chart.SeriesCollection(1).Values = [4.3, 2.5, 5, 4.5];

赋值语句:

  • 不抛异常

  • 立即读取仍然是原值

  • 等待 1 秒后读取仍然是原值

  • 调用 chart.Refresh() 后仍然没有变化

  • 重新获取 SeriesCollection(1) 后再次读取,仍然是原值

即:

写入前:
[4.3, 2.5, 3.5, 4.5]

尝试写入:
[4.3, 2.5, 5, 4.5]

写入后:
[4.3, 2.5, 3.5, 4.5]

异常:
无

预期行为

执行:

chart.SeriesCollection(1).Values = [4.3, 2.5, 5, 4.5];

后,应能够再次读取到:

[4.3, 2.5, 5, 4.5]

同时图表中的对应数据点应更新。

已验证情况

目前已经在不同环境中复现过类似现象:

  • Windows WPS 演示

  • macOS WPS 演示

  • 不同 WPS Build

  • 柱形图

  • 折线图

因此目前看不像是单一系统或单一图表类型的问题。

同时测试过图表对象上的其他普通属性,例如:

SeriesCollection(1).MarkerSize

以及图表 Shape 的位置属性,可以正常修改并读回。

因此现象目前主要集中在图表系列数据写入路径。

最小复现步骤

  1. 打开 WPS 演示。

  1. 新建一个空白演示文稿。

  1. 插入一个普通柱形图。

  1. 获取图表对象。

  1. 读取第一个系列的 Values。

  1. 将其中一个数值修改后重新赋值。

  1. 再次读取 Values。

核心代码类似:

const chart = Application.ActiveWindow.Selection.ShapeRange.Item(1).Chart;

const series = chart.SeriesCollection(1);

const before = JSON.parse(JSON.stringify(series.Values));

series.Values = [4.3, 2.5, 5, 4.5];

const after = JSON.parse(JSON.stringify(series.Values));

console.log({
  before,
  after
});

实际结果为:

{
  before: [4.3, 2.5, 3.5, 4.5],
  after:  [4.3, 2.5, 3.5, 4.5]
}

赋值过程没有抛出异常。

最小复现附件

我同时准备了一个独立的最小 WPS JS 加载项复现包。

该插件不依赖第三方服务,也不依赖业务项目。

使用方式:

  1. 启动插件

  1. 在 WPS 演示中新建空白文档

  1. 插入一个普通图表并选中

  1. 点击「图表测试 → 运行写入测试」

插件会直接显示:

  • 写入前数据

  • 尝试写入的数据

  • 立即读回的数据

  • 1 秒后读回的数据

  • 是否发生异常

  • 最终判断写入是否生效

附件中包含完整源码,方便直接检查。

希望确认

希望 WPS 技术团队帮助确认以下几点:

  1. 当前 WPS 演示 JSAPI 是否支持直接通过:

Series.Values = [...]

修改图表系列数据?

  1. 如果支持,目前这种“setter 不报错但数据没有变化”的情况是否属于已知问题?

  1. 如果 Series.Values 当前无法可靠写入,官方推荐的图表数据修改方式是什么?

例如是否必须通过:

ChartData
Workbook
Worksheet / Range

修改内嵌数据源,而不能直接修改 Series.Values?

  1. 如果这是当前 JSAPI 的实现缺陷,希望能够记录并修复。

谢谢。

浏览 211
收藏
3
分享
3 +1
2
+1
全部评论 2
 
张雄
张雄

@金山办公

收到,我们先验证下
   广东省
举报
0
0
 
胡永胜
附件无法上传。
举报
0
0