表单内跳转

SpreadJS 支持通过超链接在工作簿内进行快速跳转。使用 sjs:// 协议可以链接到工作簿中的任意工作表位置,方便用户在不同工作表之间导航,适用于主从表、汇总与明细表等场景。

概述 本 Demo 展示了如何使用超链接在工作簿内实现工作表之间的跳转。通过设置以 sjs:// 开头的 URL,用户点击超链接可以快速定位到其他工作表的指定区域。 实现思路 创建包含两个工作表的 Workbook(Sheet1 和 Sheet2) 使用 fromJSON 方法加载两个工作表的预设数据 使用 setHyperlink 方法为 Sheet1 的单元格设置超链接 超链接的 URL 使用 sjs://Sheet2!A1:G1 格式,指向 Sheet2 的不同区域 每个超链接对应 Sheet2 的一行数据区域,方便用户查看详细信息 代码解析 设置工作表位置超链接 这段代码为单元格设置了指向工作表位置的超链接。URL 必须以 sjs:// 前缀开头,后面跟随有效的工作表位置引用(格式:工作表名!单元格区域)。当用户点击超链接时,SpreadJS 会自动跳转到指定工作表的对应区域并选中该区域。 运行效果 Sheet1 中显示了 10 行数据,每行的第 3 列包含一个超链接 点击任意超链接,会自动跳转到 Sheet2 并选中对应的行区域(A1:G1、A2:G2 等) 超链接实现了从主表到明细表的快速导航,方便用户查看详细数据 API 参考 setHyperlink 方法 row:单元格行号 col:单元格列号 value:超链接对象,包含以下属性: url:字符串,超链接地址。支持 http://、https://、mailto: 等标准协议,也支持 sjs:// 协议用于工作表内跳转 tooltip:字符串,鼠标悬停时显示的提示信息 linkColor:字符串,未访问时的链接颜色 visitedLinkColor:字符串,已访问后的链接颜色 target:枚举值,指定打开链接的方式 drawUnderline:布尔值,是否绘制下划线 command:字符串或函数,点击超链接时执行的命令 sheetArea:可选,指定工作表区域,默认为 viewport
window.onload = initFunction; function initFunction() { var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"), {sheetCount: 2}); var sheet = spread.getSheet(0); var detailsSheet = spread.getSheet(1); spread.suspendPaint(); sheet.fromJSON(locationSheet1JsonData); detailsSheet.fromJSON(locationSheet2JsonData); sheet.setHyperlink(0, 2, { url: "sjs://Sheet2!A1:G1"}, GC.Spread.Sheets.SheetArea.viewport); sheet.setHyperlink(1, 2, { url: "sjs://Sheet2!A2:G2"}, GC.Spread.Sheets.SheetArea.viewport); sheet.setHyperlink(2, 2, { url: "sjs://Sheet2!A3:G3"}, GC.Spread.Sheets.SheetArea.viewport); sheet.setHyperlink(3, 2, { url: "sjs://Sheet2!A4:G4"}, GC.Spread.Sheets.SheetArea.viewport); sheet.setHyperlink(4, 2, { url: "sjs://Sheet2!A5:G5"}, GC.Spread.Sheets.SheetArea.viewport); sheet.setHyperlink(5, 2, { url: "sjs://Sheet2!A6:G6"}, GC.Spread.Sheets.SheetArea.viewport); sheet.setHyperlink(6, 2, { url: "sjs://Sheet2!A7:G7"}, GC.Spread.Sheets.SheetArea.viewport); sheet.setHyperlink(7, 2, { url: "sjs://Sheet2!A8:G8"}, GC.Spread.Sheets.SheetArea.viewport); sheet.setHyperlink(8, 2, { url: "sjs://Sheet2!A9:G9"}, GC.Spread.Sheets.SheetArea.viewport); sheet.setHyperlink(9, 2, { url: "sjs://Sheet2!A10:G10"}, GC.Spread.Sheets.SheetArea.viewport); 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/data/hyperlink-data.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> </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; }