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”哦,博主在此感谢!
原文地址:https://www.cnblogs.com/Codebee-club/p/15123095.html