示例说明
在使用电子表格做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中图形是否跨出了其单元格列范围,若超出了其范围,会导致代码错误
borderColor | #BBBBBB |
---|---|
bgColor | #F0F0F0 |
borderWidth | 1 |
borderStyle | solid |