超链接基础应用

SpreadJS 支持在单元格中插入超链接,快速访问网页、文件或邮件地址。可以自定义链接颜色、提示信息、打开方式等样式属性,并提供交互式设置面板方便动态配置。适用于需要在表格中添加导航链接或关联外部资源的场景,如数据报表关联详细说明页、产品列表链接到产品详情等。

概述 本 Demo 展示了 SpreadJS 中超链接功能的基础应用,包括如何设置不同样式的超链接(基本超链接、带提示的超链接、自定义颜色的超链接、无下划线超链接等),以及如何通过交互面板动态配置超链接属性。同时演示了自动创建超链接功能的开启和关闭。 实现思路 创建工作簿并获取活动工作表 演示多种超链接设置方式:基本超链接、带工具提示、自定义链接颜色、自定义已访问颜色、无下划线 为每种超链接设置对应的说明文本 提供交互式面板,允许用户输入参数并为选中单元格动态设置超链接 通过复选框控制自动创建超链接功能的开关 代码解析 设置基本超链接 创建超链接对象,通过 setHyperlink 方法设置到指定单元格。url 属性指定超链接目标地址。 设置带工具提示的超链接 tooltip 属性设置鼠标悬停时显示的提示信息。 自定义链接样式 linkColor 设置未访问链接的颜色,visitedLinkColor 设置已访问链接的颜色,drawUnderline 控制是否显示下划线。 动态设置超链接 从交互面板获取用户输入的参数,创建超链接对象并设置到当前选中的单元格。getActiveRowIndex 和 getActiveColumnIndex 方法获取当前活动单元格的位置。 控制自动创建超链接 spread.options.allowAutoCreateHyperlink 属性控制是否在用户输入 URL 格式文本时自动创建超链接,默认为 true。 运行效果 表格中展示了 5 种不同样式的超链接示例,每个单元格都有对应的说明文本 点击任意超链接单元格,会在新窗口中打开对应网址 鼠标悬停在超链接上,会显示工具提示信息 在右侧面板中输入 URL、提示、颜色等参数,选中单元格后点击"设置超链接"按钮,即可为该单元格设置自定义超链接 取消勾选"允许自动创建超链接",输入 URL 格式文本时将不会自动转换为超链接 API 参考 setHyperlink 方法 在指定单元格中设置超链接。 row:行索引 col:列索引 value:超链接对象,包含以下属性: url (字符串):超链接目标地址 tooltip (字符串):鼠标悬停提示信息 linkColor (字符串):未访问链接颜色,默认 #0066cc visitedLinkColor (字符串):已访问链接颜色,默认 #3399ff target (枚举):打开方式,0-新窗口,1-自身窗口,2-父窗口,3-顶级窗口 drawUnderline (布尔):是否绘制下划线,默认 true sheetArea:可选,指定工作表区域 allowAutoCreateHyperlink 属性 是否启用自动创建超链接功能。默认为 true,当用户输入 URL 格式文本时会自动创建超链接。
window.onload = initFunction; function initFunction() { var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"), { sheetCount: 1 }); var sheet = spread.getActiveSheet(); spread.suspendPaint(); sheet.setText(1, 1, 'SpreadJS Demo Link'); sheet.setText(2, 1, 'https://www.grapecity.com.cn/developer/spreadjs/demo'); var hyperlinkForUrl = {}; hyperlinkForUrl.url = 'https://www.grapecity.com.cn/developer/spreadjs/demo'; sheet.setHyperlink(2, 1, hyperlinkForUrl); sheet.setText(5, 1, 'Link with tooltip'); sheet.setText(6, 1, 'https://www.grapecity.com.cn/developer/spreadjs/demo'); var hyperlinkForTooltip = {}; hyperlinkForTooltip.url = 'https://www.grapecity.com.cn/developer/spreadjs/demo'; hyperlinkForTooltip.tooltip = 'GrapeCity SpreadJS Demos'; sheet.setHyperlink(6, 1, hyperlinkForTooltip); sheet.setText(9, 1, 'Change link foreColor'); sheet.setText(10, 1, 'https://www.grapecity.com.cn/developer/spreadjs/demo'); var hyperlinkForForeColor = {}; hyperlinkForForeColor.url = 'https://www.grapecity.com.cn/developer/spreadjs/demo'; hyperlinkForForeColor.tooltip = 'GrapeCity SpreadJS Demos'; hyperlinkForForeColor.linkColor = 'red'; sheet.setHyperlink(10, 1, hyperlinkForForeColor); sheet.setText(13, 1, 'Change link visited color'); sheet.setText(14, 1, 'https://www.grapecity.com.cn/developer/spreadjs/demo'); var hyperlinkForVisitedColor = {}; hyperlinkForVisitedColor.url = 'https://www.grapecity.com.cn/developer/spreadjs/demo'; hyperlinkForVisitedColor.tooltip = 'GrapeCity SpreadJS Demos'; hyperlinkForVisitedColor.visitedLinkColor = 'green'; sheet.setHyperlink(14, 1, hyperlinkForVisitedColor); sheet.setText(17, 1, 'Link without underline'); sheet.setText(18, 1, 'https://www.grapecity.com.cn/developer/spreadjs/demo'); var hyperlinkWithoutUnderline = {}; hyperlinkWithoutUnderline.url = 'https://www.grapecity.com.cn/developer/spreadjs/demo'; hyperlinkWithoutUnderline.tooltip = 'GrapeCity SpreadJS Demos'; hyperlinkWithoutUnderline.drawUnderline = false; sheet.setHyperlink(18, 1, hyperlinkWithoutUnderline); var hyperlinkButtonElement = document.getElementById('setHyperlinkButton'); hyperlinkButtonElement.onclick = function(e) { var hyperlink = {}; hyperlink.url = document.getElementById('hyperlinkURL').value; hyperlink.tooltip = document.getElementById('tooltip').value; hyperlink.linkColor = document.getElementById('linkColor').value; if (hyperlink.linkColor === "") { hyperlink.linkColor = undefined; } hyperlink.visitedLinkColor = document.getElementById('visitedLinkColor').value; if (hyperlink.visitedLinkColor === "") { hyperlink.visitedLinkColor = undefined; } hyperlink.target = document.getElementById('hyperlinkTarget').value; hyperlink.drawUnderline = document.getElementById('drawUnderline').checked; var row = sheet.getActiveRowIndex(); var col = sheet.getActiveColumnIndex(); sheet.setHyperlink(row, col, hyperlink); sheet.setValue(row, col, hyperlink.tooltip); }; var allowAutoCreateHyperlinkElement = document.getElementById('allowAutoCreateHyperlink'); allowAutoCreateHyperlinkElement.checked = true; allowAutoCreateHyperlinkElement.onchange = function(e) { spread.options.allowAutoCreateHyperlink = e.target.checked; }; spread.resumePaint(); }
<!doctype html> <html style="height:100%;font-size:14px;"> <head> <meta name="spreadjs culture" content="zh-cn" /> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <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"> <strong class="sp-demo-HeaderTitle">设置:</strong> <P style="padding:2px 10px">设置单元格的超链接数据:</P> <fieldset> <div id="settingsDiv" style="margin-top: 10px"> <div class="option-row"> <label for="hyperlinkURL">URL:</label> <input type="text" id="hyperlinkURL" placeholder="https://www.grapecity.com/"> </div> <div class="option-row"> <label for="tooltip">工具提示:</label> <input type="text" id="tooltip" placeholder="葡萄城"> </div> <div class="option-row"> <label for="linkColor">链接颜色:</label> <input type="text" id="linkColor" placeholder="#0066cc"> </div> <div class="option-row"> <label for="visitedLinkColor">已访问链接颜色:</label> <input type="text" id="visitedLinkColor" placeholder="#3399ff"> </div> <div class="option-row"> <label for="hyperlinkTarget">目标:</label> <select id="hyperlinkTarget" name="hyperlinkTarget"> <option value="0">新窗口</option> <option value="1">自身窗口</option> <option value="2">父窗口</option> <option value="3">顶级窗口</option> </select> </div> <div class="option-row"> <label for="drawUnderline">绘制下划线:</label> <input type="checkbox" id="drawUnderline"> </div> <div class="option-row"> <button id="setHyperlinkButton">设置超链接</button> </div> </div> </fieldset> <div style="margin-top: 10px"> <div class="option-row"> <label for="allowAutoCreateHyperlink">允许自动创建超链接:</label> <input id="allowAutoCreateHyperlink" type="checkbox"> </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; padding: 12px; height: 100%; box-sizing: border-box; background: #fbfbfb; overflow: auto; } .options-container legend { text-align: center; } .option-row { font-size: 14px; padding: 5px; } input { display:block; width: 100%; margin: 8px 0; box-sizing: border-box; } label, input { padding: 4px 6px; } body { position: absolute; top: 0; bottom: 0; left: 0; right: 0; } #drawUnderline { display: inline-block; width: 30px; } #drawUnderlineLabel { display: inline-block; } #allowAutoCreateHyperlink { display: inline-block; width: 30px; } #setHyperlinkButton { font-weight: bold; background-color: #ecf3ff; width: 200px; height: 35px; border-radius: 4px; border-color: #0b93d5; border-width: thin; }