zoukankan      html  css  js  c++  java
  • v2SpreedJS电子表格js可复用代码块

    v2电子表格js可复用代码块

    文档说明

    1. excel中对应的A1单元格处于1行1列, 对应于代码spread中row: 0 , col: 0,如果使用工具从工具台获取到的行列信息均是处理好的不需要动.
    2. 以下面维度年pov为例解释各行结构
    3. 贴入代码后执行下图的操作
    

    表单内相关功能

    将维度年pov写入a1

    // PovConnt为函数名称
    export default () => {
      // 设置区域的
      const PovConnt = (workbook) => {
        const {
          spread,
          customization: {
            getPOVMember,
          }
    
        } = workbook
        spread.getActiveSheet().setValue(0, 0, getPOVMember(spread.getActiveSheet().name(), 'Year').label.replace('年', ''))
      };
      return {
        PovConnt
      };
    }
    

    设置单个单元格锁定

    export default () => {
      const Lockedd = (workbook) => {
        console.log('我执行了')
        const {
          GC,
          spread,
          customization: {
            getPOVMember,
          }
        } = workbook
        // 从这里开始可移动代码块
        let needLockCell = [{
          row: 15,
          col: 8
        }]
        // suspendPaint 挂起绘制spread,还有挂起事件,使用的目的在于可以让spread避免重复不必要的渲染,以加快渲染速度
        // 通过spread的事件EditStarting监听进入编辑的事件,阻止编辑以达到保护单元格禁止编辑的目的
        spread.suspendPaint();
        spread.bind(
          GC.Spread.Sheets.Events.EditStarting,
          function (s, argss) {
            needLockCell.filter((item) => {
              if (item.col === argss.col && item.row === argss.row) {
                argss.cancel = 'true'
              }
            })
            // argss.cancel = 'true';
          }
        );
        needLockCell.map((item) => {
          console.log(item)
          // 给需要设置锁定的单元格设置颜色
          spread.getActiveSheet().getCell(item.row, item.col).backColor("#E8E8E8");
    
        })
        spread.resumePaint()
        // 代码块到这里结束
      }
      return {
        Lockedd
      }
    }
    

    设置按列单元格锁定

    export default () => {
      const Lockedd = (workbook) => {
        console.log('我执行了')
        const {
          GC,
          spread,
          customization: {
            getPOVMember,
          }
        } = workbook
        // 从这里开始可移动代码块
        // 注意这里的rowcol填入最好放在第一行,就是维度行下的第一行,不过试一试也就知道了
        let needLockCell = [{
          row: 15,
          col: 8
        }]
        spread.suspendPaint();
        spread.bind(
          GC.Spread.Sheets.Events.EditStarting,
          function (s, argss) {
            needLockCell.filter((item) => {
              if (item.col === argss.col) {
                argss.cancel = 'true'
              }
            })
            // argss.cancel = 'true';
          }
        );
        needLockCell.map((item) => {
          console.log(item)
          // 给需要设置锁定的单元格设置颜色
          for(let i=item.row;i<spread.getActiveSheet().getRowCount();i++){
            spread.getActiveSheet().getCell(i,item.col).backColor("#E8E8E8");
          }
          
        })
        spread.resumePaint()
        // 代码块到这里结束
        }
        return {
          Lockedd
        }
      }
    

    设置单个单元格公式

    export default () => {
      // 设置区域的
      const setFormulaS=(workbook)=>{
        const {
          spread,
          customization: {
            getPOVMember,
          }
        } = workbook
        console.log('我执行了写公式')
        let formulaArr = [
          {
              "row": 3,
              "col": 13,
              "formule": "IFERROR(M4/U4,0)"
          }
      ]
        formulaArr.map(item=>{
          spread.getActiveSheet().getCell(item.row,item.col).formula(item.formule)
        })
      }
      return {
        setFormulaS
      }
    }
    

    设置按列设置公式

    export default()=>{
      const setFormulaS = (workbook) => {
        const {
          spread,
          customization: {
            getPOVMember,
          }
        } = workbook
        // 按列设置单元格的公式 如 : 公式为G5到最后一行 公式写为 G5:G${getRowend*()}
        const getRowend = () => {
          return spread.getActiveSheet().getRowCount()
        }
        spread.suspendPaint();
        let formulaArr = [{
          data: {
            "row": 2,
            "rowCount": 1,
            "col": 9,
            "colCount": 1
          },
          formatele: `H3:H${getRowend()}*I3:I${getRowend()}`
        }/*资产金额合计*/
        ]
        formulaArr.map(item => {
          let sheet = spread.getActiveSheet()
          let endRow = sheet.getRowCount()
          sheet.setArrayFormula(item.data.row, item.data.col, endRow - item.data.row, item.data.colCount, item.formatele)
        })
        spread.resumePaint()
      }
      
      return {
        setFormulaS
      }
    }
    

    设置选择区域的样式 百分比

      export default () => {
      // 设置区域的
      const needCell = [
        {
          "row": 3,
          "rowCount": 3,
          "col": 32,
          "colCount": 2
        }
      ]
      const setperent = (workbook) => {
        console.log('这是生效')
        const { spread } = workbook
        const sheet = spread.getActiveSheet();
        needCell.map((item) => {
          sheet.getRange(item.row, item.col, item.rowCount, item.colCount).formatter("0.00%");
        })
      };
      return {
        setperent
      };
    }
    
    
    

    设置列隐藏

    // 如果要放按钮出来,要联系(***)
    export default ()=> {
      const colVisible = (workbook) => {
        const {
          spread,
          customization: {
            getPOVMember,
          }
        } = workbook
          let visibleCell = [
           {
            "colStart": 2, // 对应隐藏显示的
            "colEnd": 6
          },
        ]
        spread.suspendPaint();
        visibleCell.map(item => {
          for(let i=item.colStart;i<=item.colEnd;i++){
          spread.getActiveSheet().setColumnVisible(i,false)
          }
        })
        spread.resumePaint()
      }
      
      return {
        colVisible
      }
    }
    

    作者:韩小乐
    -------------------------------------------
    个性签名:❤祝祖国70岁生日快乐❤
    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“Like”哦,博主在此感谢!
  • 相关阅读:
    BZOJ 1003--[ZJOI2006]物流运输(最短路)
    BZOJ 1002--[FJOI2007]轮状病毒(高精度)
    BZOJ 1001--[BeiJing2006]狼抓兔子(最短路&对偶图)
    BZOJ 1719--[Usaco2006 Jan] Roping the Field 麦田巨画(几何&区间dp)
    BZOJ 2821--作诗(分块)
    BZOJ 2724--蒲公英(分块)
    BZOJ 2388--旅行规划(分块&单调栈&二分)
    用python操作Git
    JS常用到的日期函数
    Python3.7使用celery出现from . import async, base SyntaxError: invalid syntax错误
  • 原文地址:https://www.cnblogs.com/Codebee-club/p/15123095.html
Copyright © 2011-2022 走看看