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