请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

往事随风

注册会员

3

主题

4

帖子

27

积分

注册会员

积分
27

微信认证勋章

最新发帖
往事随风
注册会员   /  发表于:2018-9-11 14:23  /   查看:3559  /  回复:4
现在要实现一个类似Excel的显示公式的内容(如下),选择一个含有公式的单元格,点击一个切换“显示公式”按钮,切换单元格的值和公式。请问SpreadJS有没有这样的方法? image.png187467650.png



4 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-9-11 17:20:58
沙发
您好,目前SpreadJS没有能一键实现显示或隐藏公式的接口,您可以通过遍历单元格的方式实现,我给您贴一个Demo,您可以参考一下:
js代码:
  1. $(document).ready(function () {
  2.     var spread = new GC.Spread.Sheets.Workbook(document.getElementById('ss'), {
  3.         sheetCount: 1
  4.     });
  5.     initSpread(spread);
  6. });

  7. function initSpread(spread) {

  8.     var spreadNS = GC.Spread.Sheets;

  9.     var sheet = spread.getSheet(0);
  10.     sheet.name('Basic Fucntions');
  11.     // 重要: 挂起表格的绘制操作.
  12.     // 先对表格实例进行操作,等操作完毕再恢复绘制,否则会极大拖慢执行效率
  13.     sheet.suspendPaint();

  14.     sheet.setValue(2, 1, "name");
  15.     sheet.setValue(2, 2, "age");
  16.     sheet.setValue(3, 1, "Jack");
  17.     sheet.setValue(4, 1, "Lily");
  18.     sheet.setValue(5, 1, "John");
  19.     sheet.setValue(6, 1, "Mary");
  20.     sheet.setValue(3, 2, 19);
  21.     sheet.setValue(4, 2, 21);
  22.     sheet.setValue(5, 2, 22);
  23.     sheet.setValue(6, 2, 25);

  24.     sheet.setText(8, 0, "Average Age:");
  25.     sheet.setText(9, 0, "Max Age:");
  26.     sheet.setText(10, 0, "Min Age:");
  27.     sheet.addSpan(8, 0, 1, 2);
  28.     sheet.addSpan(9, 0, 1, 2);
  29.     sheet.addSpan(10, 0, 1, 2);

  30.     sheet.setFormula(8, 2, "=AVERAGE(C4:C7)");
  31.     sheet.setFormula(9, 2, "=MAX(C4:C7)");
  32.     sheet.setFormula(10, 2, "=MIN(C4:C7)");


  33.     var showFormulaCells = [];

  34.     $("#showFormula").bind("click", function () {

  35.         sheet.suspendPaint();

  36.         var rowCount = sheet.getRowCount();
  37.         var columnCount = sheet.getColumnCount();

  38.         for(var i=0; i<rowCount; i++){
  39.             for (var j = 0; j < columnCount; j++) {
  40.                 var formula = sheet.getFormula(i,j);
  41.                 if(formula){
  42.                     sheet.setFormula(i,j, "");
  43.                     sheet.setText(i,j, "=" + formula);
  44.                     showFormulaCells.push({
  45.                         rowNum : i ,
  46.                         colNum : j ,
  47.                         formula : formula
  48.                     });
  49.                 }
  50.             }
  51.         }

  52.         sheet.resumePaint();
  53.     });

  54.     $("#hideFormula").bind("click", function () {
  55.         if(showFormulaCells.length === 0){
  56.             return;
  57.         }
  58.         sheet.suspendPaint();

  59.         for(var i=0; i<showFormulaCells.length; i++){
  60.             var row = showFormulaCells[i]["rowNum"];
  61.             var col = showFormulaCells[i]["colNum"];
  62.             var formula = showFormulaCells[i]["formula"];
  63.             sheet.setFormula(row, col, "=" + formula);
  64.         }
  65.         showFormulaCells = [];

  66.         sheet.resumePaint();
  67.     });

  68.     // 恢复表格绘制操作.
  69.     sheet.resumePaint();

  70. }
复制代码


html代码:

  1. <html>
  2. <head>
  3.     <meta charset="UTF-8" />
  4.     <link rel="stylesheet" type="text/css" href="resources/css/spread/gc.spread.sheets.excel2013white.11.2.2.css">
  5.     <script src="resources/js/jquery-1.8.2.min.js" type="text/javascript"></script>
  6.     <script src="resources/js/spread/gc.spread.sheets.all.11.2.2.min.js" type="text/javascript"></script>
  7.     <script src="resources/js/spread/gc.spread.sheets.resources.zh.11.2.2.min.js" type="text/javascript"></script>
  8.     <script src="index_4.js" type="text/javascript"></script>
  9. </head>
  10. <body>
  11. <div id='ss' style='width:100%; height:800px;'></div>
  12. <div>
  13.     <button id="showFormula">显示公式</button>
  14.     <button id="hideFormula">隐藏公式</button>
  15. </div>
  16. </body>
  17. </html>
复制代码

评分

参与人数 1满意度 +5 收起 理由
往事随风 + 5 很给力!

查看全部评分

回复 使用道具 举报
往事随风
注册会员   /  发表于:2018-9-12 09:34:42
板凳
KevinChen 发表于 2018-9-11 17:20
您好,目前SpreadJS没有能一键实现显示或隐藏公式的接口,您可以通过遍历单元格的方式实现,我给您贴一个De ...

好的,感谢!
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2018-9-12 09:44:17
地板
谢谢您的支持,我这边把本帖结贴了,您如遇到其他问题欢迎另开新帖进行询问。
回复 使用道具 举报
Fiooona
论坛元老   /  发表于:2020-7-10 17:41:41
5#
您好,V13.1 以后的版本中可以使用这个接口实现显示公式的功能:
sheet.options.showFormulas = true;

https://demo.grapecity.com.cn/sp ... ght=showformulas%2C
组件化表格编辑器(预览版)试用进行中,点击了解详情!
请点击评分,对我的服务做出评价!5分为非常满意!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部