概述
本 Demo 展示了如何使用 HYPERLINK 公式函数创建动态超链接。通过公式方式创建超链接的优势在于可以动态引用其他单元格的内容,当引用的 URL 或显示文本发生变化时,超链接会自动更新。
实现思路
使用 fromJSON 加载预设的表格数据(包含 URL 和显示文本信息)
为第 0-9 行的 C 列设置 HYPERLINK 公式
公式引用 B 列单元格作为链接地址,A 列单元格作为显示文本
通过 suspendPaint 和 resumePaint 批量设置公式,提高渲染性能
代码解析
加载预设数据并设置公式
HYPERLINK 公式结构
公式通过引用单元格实现动态超链接功能。第一个参数引用 B 列单元格作为链接地址,第二个参数引用 A 列单元格作为显示文本。当 A 列或 B 列数据变化时,超链接会自动更新。
运行效果
表格中 URL 和名称列的数据通过 HYPERLINK 公式转换为可点击的超链接
点击超链接会在浏览器新标签页中打开对应的网址
数据列更新后,超链接的显示文本和跳转地址同步刷新
API 参考
HYPERLINK 函数
link:超链接的 URL 地址(必填),可以是字符串或单元格引用
display_name:显示在单元格中的文本(可选),省略时显示完整链接地址
window.onload = initFunction;
function initFunction() {
var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"), {sheetCount: 1});
var sheet = spread.getActiveSheet();
spread.suspendPaint();
sheet.fromJSON(formulaJsonData);
sheet.setFormula(0, 2, "=HYPERLINK(B1, A1");
sheet.setFormula(1, 2, "=HYPERLINK(B2, A2");
sheet.setFormula(2, 2, "=HYPERLINK(B3, A3");
sheet.setFormula(3, 2, "=HYPERLINK(B4, A4");
sheet.setFormula(4, 2, "=HYPERLINK(B5, A5");
sheet.setFormula(5, 2, "=HYPERLINK(B6, A6");
sheet.setFormula(6, 2, "=HYPERLINK(B7, A7");
sheet.setFormula(7, 2, "=HYPERLINK(B8, A8");
sheet.setFormula(8, 2, "=HYPERLINK(B9, A9");
sheet.setFormula(9, 2, "=HYPERLINK(B10, A10");
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="$DEMOROOT$/spread/source/data/hyperlink-data.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>
</body>
</html>
.sample-tutorial {
position: relative;
height: 100%;
overflow: hidden;
}
.sample-spreadsheets {
width: 100%;
height: 100%;
overflow: hidden;
float: left;
}
.options-container {
float: right;
padding: 12px;
height: 100%;
width: 100%;
box-sizing: border-box;
background: #fbfbfb;
overflow: auto;
}
.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;
}