如何基于模板单元格设置瀑布图
本帖最后由 Aria 于 2024-12-18 15:39 编辑原贴
demo请查看上述原贴
原贴中:常量sheet的范围跟数据源sheet的区别就是一个扩展之后的常量数据,一个是模板单元格
疑问:常量sheet中插入的瀑布图跟模板单元格中插入的瀑布图的范围是一样的,为什么常量sheet中可以正常呢?
诉求:提供基于模板单元格插入瀑布图的配置步骤,谢谢~
本帖最后由 Joestar.Xu 于 2024-12-19 12:02 编辑
您好,我看了您之前发的帖子。
看上去您是想调整瀑布图的数据范围,从=Sheet1!$A$1:$B$2,变成=Sheet1!$B$1:$B$2。
之所以这么设置我理解您是想将B2这个单元格作为一个模板放在GcExcel中进行扩展,然后根据扩展的数据绘制瀑布图。
不过我在Excel中实际测试了一下,当我将数据系列的值设置为=Sheet1!$B$2:$B$15后,如下图:
图表实际上没有发生任何变化?我理解这应该不是您所期望的效果。实际上期望的应是下图:
从以上的情况来分析,从Excel中想要按照您的操作实现这个需求看上去是不行的,如果您有其他的操作能够实现,还请您分享一下,我们共同探讨。
说回SpreadJS,SpreadJS的瀑布图是V17的特性,目前无法做到像Excel那么只能地根据UI上选择的范围自动Union,属于当前版本的设计,暂无其他方案。 Joestar.Xu 发表于 2024-12-18 17:43
您好,我看了您之前发的帖子。
看上去您是想调整瀑布图的数据范围,从=Sheet1!$A$1B$2,变成=Sheet1!$ ...
我并没有想修改数据范围,就是想基于数据范围A1:B2创建瀑布图的,只是在选择数据范围后,修改图例项后,数据范围自动变的,所以才请教这个到底要怎么配呢?基于模版单元格去创建瀑布图的时候,图例项默认出来的是不对的,需要手动去修改 没太明白,我在Excel中按照您说的修改了图例项以后,图表没有发生任何变化。
“基于模版单元格去创建瀑布图的时候,图例项默认出来的是不对的”,不对的具体表现是什么? Joestar.Xu 发表于 2024-12-19 13:48
没太明白,我在Excel中按照您说的修改了图例项以后,图表没有发生任何变化。
“基于模版单元格去创建瀑 ...
可以看下原贴的图 我们是spreadJS + gc一起使用的,所以会存在spreadJS单元格内是模板单元格,基于模板单元格去设置瀑布图。 请在spreadJS中复现该问题 了解,SpreadJS确实可以复现出您的问题,且根据之前调研的结果,该情况属于目前产品的设计。
我理解您期望的效果是想要像Excel一样可以直接设置而不会出现提示,但实际上我在Excel中按照您说的修改后图表没有发生变化;既然图表上没有发生变化的话,为什么需要调整这一块的数据?
按照我的理解,您目前的这个情况是一个新的需求,因此我需要获取您目前这么设置的原因或是实际的需求,为什么需要调整图例项?只有明确了这些信息后我们这边才能按照您的需求去调研乃至后续的需求实现,否则在后续的版本中支持了也大概率不是您期望的效果。 已上传录屏,其实就是想实现常量sheet中的效果
看起来你是想用gcexcel的template+chart,我做了一个excel,大概能实现你说的需求。
代码:
@Test
public final void testWaterfall() {
// write test code
List dataSource = getDataSource();
Workbook workbook = new Workbook();
workbook.open(("waterfall.xlsx"));
workbook.addDataSource("ds", new JsonDataSource(JSON.toJSONString(dataSource)));
workbook.processTemplate();
workbook.save(("res.sjs"));
workbook.save(("res.xlsx"));
}
private static List getDataSource() {
List dataSource = new ArrayList<Map>();
Random random = new Random();
for (int i = 0; i < 12; i++) {
Map rowData = new HashMap<String, String>();
rowData.put("month", i+1);
rowData.put("account", random.nextDouble());
dataSource.add(rowData);
}
return dataSource;
}
关键点在于指定series values
页:
[1]
2