示例说明
在使用电子表格做KPI等报表时,需要保持整体的风格,如果电子表格中带有图形,并且图形的高度是动态变化时,图形四周及其所覆盖的单元格的背景色就需要加以调整,以便保持报表的美观。
未使用宏调整背景色:
使用宏调整背景色:
切换参数
设置方法
- 首先在电子表格设计器(Microsoft Office Excel)中,创建电子表格报表。
- 在浏览器的资源定制节点下,选中电子表格,右键选择 编辑宏 进入报表宏界面。
- 设置图形高度动态变化宏代码(该步骤可选)
- 在报表宏界面新建服务端模块。在弹出的新建模块对话框中,选择对象为spreadsheetReport、事件为onBeforeOutput、并把下面宏代码复制到代码编辑区域。
宏类型
类型 | 对象 | 事件 |
---|---|---|
服务端宏 | spreadsheetReport | onBeforeOutput |
宏代码
function main(spreadsheetReport) { var sheet = spreadsheetReport.workbook.worksheets.get(0); //获取图表,"图表 1"为图表的名称 var shape = sheet.shapes.get("图表 1"); var cells = sheet.cells; //获取图表左上角的行号、右下角的行号、左上角的列号和右下角的列好,以确定需要设置背景色的单元格的范围 var upperLeftRow = shape.upperLeftRow; var lowerRightRow = shape.lowerRightRow; var upperLeftColumn = shape.upperLeftColumn; var lowerRightColumn = shape.lowerRightColumn; for (var i = upperLeftRow; i <= lowerRightRow; i++) { //由于图形只占B到H列,A列和I列同样需要设置背景色,因此需要对范围进行增减1 for (var j = upperLeftColumn - 1; j <= lowerRightColumn + 1; j++) { var cell = cells.get(i, j); var style = cell.style; style.foregroundColor = spreadsheetReport.getColor(242, 242, 242); style.pattern = 1; cell.style = style; } } }
资源下载:设置图形下的单元格背景色.xml
备注:若打开报表时抛出如下错误
是由于在代码中,对需要设置的列前后扩充了一列,需要检查Excel中图形是否跨出了其单元格列范围,若超出了其范围,会导致代码错误