找回密码
 立即注册

QQ登录

只需一步,快速开始

天涯路远
注册会员   /  发表于:2024-10-26 16:46  /   查看:349  /  回复:7
1金币
本帖最后由 Wilson.Zhang 于 2024-12-3 12:28 编辑

产品:SpreadJS
版本:17.0.8
调研编号:SJS-27092
Last Review:2024-12-03
当前进展:非功能问题,保留当前设计。

1、新建sheet页有400行不重复的数据

2、选中全部数据新建数据透视表
3、拖拽显示全部行数据,最大只能显示两百条数据

最佳答案

查看完整内容

Excel中sheet页的行数可以自动扩展,最大行数限制为1048576行。然而,SpreadJS保留了自己的设计,即默认行数为200行,如果数据量超过初始行数,需要通过Worksheet:setRowCount()设置以扩展行数。 关于您的问题,SpreadJS提供了PivotTableChanged事件以监听数据透视表的结构变化,当通过右侧设置面板拖拽字段至数据透视表中时即可触发该事件。此时,根据数据透视表的数据所跨越的行数和当前sheet的总行数之间的差距,重新设置s ...

7 个回复

倒序浏览
最佳答案
最佳答案
Wilson.Zhang
超级版主   /  发表于:2024-10-26 16:46:24
来自 4#
天涯路远 发表于 2024-10-28 11:50
1、这个行为跟Excle不一致,2、而且插入数据透视表应该是组件的行为,数据处理应该是组件去处理,让我们 ...

Excel中sheet页的行数可以自动扩展,最大行数限制为1048576行。然而,SpreadJS保留了自己的设计,即默认行数为200行,如果数据量超过初始行数,需要通过Worksheet:setRowCount()设置以扩展行数。

关于您的问题,SpreadJS提供了PivotTableChanged事件以监听数据透视表的结构变化,当通过右侧设置面板拖拽字段至数据透视表中时即可触发该事件。此时,根据数据透视表的数据所跨越的行数和当前sheet的总行数之间的差距,重新设置sheet的行数以使得sheet足以支撑数据透视表渲染显示所有数据。可以参考如下代码:
  1. var pivotTable = sheet.pivotTables.all()[0];
  2. spread.bind(GC.Spread.Sheets.Events.PivotTableChanged, function(e, args) {
  3.     console.log('pivotTableChanged, args: ', args);
  4.     //  数据透视表所需的区域范围
  5.     var pivotRange = pivotTable.getRange().content;
  6.     console.log('pivotRange: ', pivotRange);
  7.     //  根据数据透视表起始行、sheet页总行数、数据透视表所需行数即可计算得出当前sheet需要新增的行数
  8.     var needAddingRows = pivotRange.rowCount - (sheet.getRowCount() - pivotRange.row);
  9.     console.log('needAddingRows: ', needAddingRows);
  10.     //  重设sheet总行数,以下结果与sheet.getRowCount() + needAddingRows结果一致,因此简化之
  11.     sheet.setRowCount(pivotRange.rowCount + pivotRange.row);
  12. });
复制代码


回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-28 08:28:02
2#
您好!SpreadJS的Worksheet默认有200行,如果透视表所在sheet和数据源所在sheet是两个sheet,需要为透视表所在sheet设置行数大于等于400行。
回复 使用道具 举报
天涯路远
注册会员   /  发表于:2024-10-28 11:50:18
3#
Wilson.Zhang 发表于 2024-10-28 08:28
您好!SpreadJS的Worksheet默认有200行,如果透视表所在sheet和数据源所在sheet是两个sheet,需要为透视表 ...

1、这个行为跟Excle不一致,2、而且插入数据透视表应该是组件的行为,数据处理应该是组件去处理,让我们手动去设置我觉得不太合理
回复 使用道具 举报
天涯路远
注册会员   /  发表于:2024-10-30 10:11:48
5#
Wilson.Zhang 发表于 2024-10-28 16:22
Excel中sheet页的行数可以自动扩展,最大行数限制为1048576行。然而,SpreadJS保留了自己的设计,即默认 ...

这个不应该做到组件里面吗?我理解
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-30 13:45:15
6#
天涯路远 发表于 2024-10-30 10:11
这个不应该做到组件里面吗?我理解

很抱歉,理解您的使用期望。当前的产品无法自动扩展行数,粘贴时倒是可以通过设置allowExtendPasteRange属性为true实现自动扩展行数。未来可能会增强功能,当前您可以参考在4楼给您提供的workaround使用。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-30 14:06:30
7#
我们也反馈了这个功能,调研编号为SJS-27092,之后会向您及时同步结论。目前,如之前所言,您可以参考在4楼给您提供的workaround使用。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-12-3 12:28:11
8#
您好!经确认,保留当前设计,未来尚不确定是否会增强这个功能,当前建议您参考之前告诉您的方案使用。同时又了解到一种新方案,也是通过扩展数据透视表所在sheet的rowCount实现,参考如下代码:
  1. spread.bind(GC.Spread.Sheets.Events.PivotTableChanged, function (evt, args) {
  2.     var sheet = spread.getActiveSheet();;
  3.     var ptRange = sheet.pivotTables.get(args.pivotTableName).getRange();
  4.     var sheetCount = sheet.getRowCount();
  5.     sheet.setRowCount(Math.max(sheetCount, ptRange.content.row + ptRange.content.rowCount));
  6. });
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部