概述
本 Demo 展示了如何动态修改批注指示器的颜色和大小。用户可以通过输入框设置颜色值和大小值,点击按钮后即时应用到批注指示器上。
实现思路
初始化工作表,在单元格 (1,1) 添加批注
在输入框中设置指示器颜色值(如 "red"、"#FF0000"、"rgb(255,0,0)")
在输入框中设置指示器大小(数字类型,单位为像素)
点击按钮后,通过批注对象的 indicatorColor() 和 indicatorSize() 方法修改样式
修改完成后,输入框会显示当前的颜色和大小值
代码解析
初始化批注
这段代码创建了一个带批注的单元格。sheet.comments.add(1, 1, "新批注!") 为单元格添加批注,然后通过 sheet.comments.get(1, 1) 获取批注对象,并读取当前的颜色和大小值显示在输入框中。
设置指示器颜色
点击"设置批注指示器颜色"按钮时,从输入框读取颜色值,通过 indicatorColor(color) 方法设置指示器颜色。颜色值支持字符串格式,如 "red"、"#FF0000"、"rgb(255,0,0)" 等。设置完成后,再读取当前颜色值回显到输入框。
设置指示器大小
点击"设置批注指示器大小"按钮时,从输入框读取大小值并转换为数字类型,通过 indicatorSize(Number(size)) 方法设置指示器大小。大小值必须大于 1,单位为像素。设置完成后,再读取当前大小值回显到输入框。
运行效果
单元格 (1,1) 的右上角显示一个红色小三角形的批注指示器
在"颜色"输入框中输入颜色值(如 "blue"、"green"、"#0000FF"),点击"设置批注指示器颜色"按钮,指示器颜色会立即改变
在"大小"输入框中输入数字(如 10、15、20),点击"设置批注指示器大小"按钮,指示器大小会立即改变
每次修改后,输入框会显示当前实际的指示器颜色和大小值
API 参考
indicatorColor(value?)
获取或设置批注的指示器颜色。
value:可选,字符串类型,颜色值(如 "red"、"#FF0000"、"rgb(255,0,0)")
返回值:获取时返回颜色字符串,设置时无返回值
indicatorSize(value?)
获取或设置批注的指示器大小。
value:可选,数字类型,指示器大小(单位:像素,必须大于 1)
返回值:获取时返回数字,设置时无返回值
comments.add(row, col, text)
为指定单元格添加批注。
row:行索引
col:列索引
text:批注文本
返回值:Comment 对象
comments.get(row, col)
获取指定单元格的批注对象。
row:行索引
col:列索引
返回值:Comment 对象
window.onload = function () {
var spread = new GC.Spread.Sheets.Workbook($("ss"));
var sheet = spread.getActiveSheet();
initData();
$('setColor').addEventListener('click', function () {
var color = $('color').value;
var comments = sheet.comments.get(1, 1);
if (!comments) {
initData();
}
sheet.comments.get(1, 1).indicatorColor(color);
$('color').value = sheet.comments.get(1, 1).indicatorColor();
});
$('setSize').addEventListener('click', function () {
var size = $('size').value;
var comments = sheet.comments.get(1, 1);
if (!comments) {
initData();
}
sheet.comments.get(1, 1).indicatorSize(Number(size));
$('size').value = sheet.comments.get(1, 1).indicatorSize();
});
function initData() {
sheet.addSpan(1, 1, 1, 6);
sheet.setValue(1, 1, "单元格右上角有一个批注");
sheet.comments.add(1, 1, "新批注!");
$('color').value = sheet.comments.get(1, 1).indicatorColor();
$('size').value = sheet.comments.get(1, 1).indicatorSize();
}
};
function $(id) {
return document.getElementById(id);
}
<!doctype html>
<html style="height:100%;font-size:14px;">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="spreadjs culture" content="zh-cn" />
<link rel="stylesheet" type="text/css"
href="$DEMOROOT$/zh/purejs/node_modules/@grapecity-software/spread-sheets/styles/gc.spread.sheets.excel2013white.css">
<script src="$DEMOROOT$/zh/purejs/node_modules/@grapecity-software/spread-sheets/dist/gc.spread.sheets.all.min.js"
type="text/javascript"></script>
<script
src="$DEMOROOT$/zh/purejs/node_modules/@grapecity-software/spread-sheets-resources-zh/dist/gc.spread.sheets.resources.zh.min.js"
type="text/javascript"></script>
<script src="$DEMOROOT$/spread/source/js/license.js" type="text/javascript"></script>
<script src="app.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
<div class="sample-tutorial">
<div id="ss" class="sample-spreadsheets"></div>
<div class="options-container">
<div style="float: right;">
<!-- change indicator options -->
<div class="group">
<div>
<div></div>
<div>
<div>
<label for="color">颜色</label>
<input id="color" class="form-control">
<input type="button" id="setColor" value="设置批注指示器颜色"
class="option-row">
</div>
</div>
<div class="col-sm-12" style="height: 30px;"></div>
<div class="col-sm-12">
<div class="input-group">
<label for="size">大小</label>
<input id="size" class="form-control">
<input type="button" id="setSize" value="设置批注指示器大小" class="option-row">
</div>
</div>
<div class="col-sm-12" style="height: 30px;"></div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
.sample-tutorial {
position: relative;
height: 100%;
overflow: hidden;
}
.sample-spreadsheets {
width: calc(100% - 280px);
height: 100%;
overflow: hidden;
float: left;
}
.options-container {
float: right;
width: 280px;
overflow: auto;
padding: 12px;
height: 100%;
box-sizing: border-box;
background: #fbfbfb;
}
.sample-options{
z-index: 1000;
}
.option {
padding-bottom: 6px;
}
.checkbox {
padding-right: 12px;
display: inline-block;
}
label {
display: inline-block;
min-width: 100px;
}
input, select {
width: 100%;
padding: 4px 0;
margin-top: 4px;
box-sizing: border-box;
}
input[type=checkbox] {
width: auto;
padding: 0;
}
body {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}