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”哦,博主在此感谢!