(本文档仅供参考,仅适用于本文档中的示例报表/场景,若实际报表/场景与示例代码无法完全适配(如使用功能不一致,或多个宏代码冲突等),需根据实际需求开发代码。)
如下一个电子表格模板,销售量在数据集中进行了排序,由于数据较多,当需要看到销售量最少的数据时,需要下拉到电子表格最后才能看到,有什么方案能够直接获取到电子表格的首行和末行数据呢?
可通过如下代码进行获取。注意:此获取的是当前页面的首行值和最末值,也就是说当报表为清单报表分页时,获取到的是当前页面的第一行和最后一行,而不是总体数据排序后的首行和末行。
服务端宏如下:
//ServerSide //spreadsheetReport //onBeforeOutput function main(spreadsheetReport) { var sheet = spreadsheetReport.sheets[0]; var posList = sheet.getExpandedPositions("C5"); //获取C5单元格字段扩展出来的所有数据 spreadsheetReport.printExpandedPositions(); //打印展开后所有单元格 var customProperties = spreadsheetReport.customProperties; for (var i = 0; i < posList.length; i++) { //将C5单元格字段扩展出来的所有数据添加到属性customProperties中 var pos = posList[i]; var value = sheet.getCellValue(pos); customProperties.put(pos + "", value); } logger.info(customProperties); //扩展字段C5所有值 } |
客户端宏如下:
//ClientSide //spreadsheetReport //spreadsheetReport function main(spreadsheetReport, isAjaxRefreshCallback) { //获取C5单元格字段扩展出来的数据 var Pos = spreadsheetReport.getExpandedPositions("C5"); var customProperties = spreadsheetReport.elemSheetFrame.contentWindow.customProperties; //获取第一行数据的值,获取最后一行数据的值 alert("销量最多:【"+customProperties[Pos[0]]+"】,销量最少:【"+customProperties[Pos[Pos.length-1]]+"】"); } |