批注指示器自定义

SpreadJS 支持自定义批注指示器的颜色和大小。通过设置指示器样式,可以让批注在表格中更加醒目或符合特定的视觉设计需求。

概述 本 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; }