Luckysheet 二开笔记

 官网地址:Luckysheet文档

因 财务系统得特殊性,Luckysheet自带得功能不足以满足客户需求,因此进行二次开发。

项目需求:按单元格设置公式,支持wps中的基本函数,加减乘除求和等,类似函数向导等功能

此次二开得主要功能点:

1. 预制函数(需要自定义函数并联动自己得项目);

 经过源码查看,源码中 src/controllers/insertFormula.js  代码中涉及到fx中得函数调用界面,下拉选择的函数类型,再通过 #luckysheet-search-formula-confirm 去联查确定方法,需要做到点击确定的时候调用我Vue的界面,并且处理成自定义公式;

预制函数添加过后,需要设置公式,设置公式的位置在zh.js

添加完具体函数,需要在函数回调处理,

回调规则:因需求是不自动执行公式,所以只做展示;(最终效果是,展示的是 显示公式,双击后内容是具体公式展示;m v 需要区分开)

获取当前点击单元格的方法:

var range = luckysheet.getRange();
if (range) {
    console.log("当前选中区域:", range);
    console.log("起始行:", range.row[0]);
    console.log("起始列:", range.column[0]);
} else {
    console.error("未选中任何单元格");
}

修改具体单元格的数据方法:

因需要m,v 分别赋值

luckysheet.setCellValue(row, col, value);
// 设置第 0 行第 0 列的值为 100
luckysheet.setCellValue(0, 0, 100);
luckysheet.setCellValue(0, 0, {m:'计算公式',v:this.resData.funEnter});

预制函数到这基本就结束了,在加一个字体颜色区分一下和正常数据的关系

window.luckysheet.setCellFormat(0, 0, 'fc', "#1062d4");

还有一个问题,再次打开自定义函数框的时候,需要把表格内的数据赋值到我自己的输入框内,

  • 使用 luckysheet.getRange() 获取选中区域。

  • 使用 luckysheet.getCellValue(row, col) 获取单元格的值。

  • 使用 luckysheet.getCellInfo(row, col) 获取单元格的详细信息(包括 v 和 m)。

luckysheet 单元格参数详情:

单元格对象详细参数

1. 基本属性
  • r: 行索引(从 0 开始)。

  • c: 列索引(从 0 开始)。

  • v: 单元格的实际值(例如,数字、字符串、公式等)。

  • m: 单元格的显示值(由 v 计算得出,通常是格式化后的值)。

  • f: 单元格的公式(如果有公式)。

  • ct: 单元格类型对象,包含以下属性:

    • fa: 自动格式化类型(例如 "General""0.00" 等)。

    • t: 数据类型(例如 "n" 表示数字,"s" 表示字符串,"b" 表示布尔值,"e" 表示错误)。

    • s: 格式化后的字符串值。

2. 样式属性
  • s: 样式对象,包含以下属性:

    • fc: 字体颜色(十六进制颜色值,例如 "#FF0000")。

    • fs: 字体大小(数字,例如 12)。

    • ff: 字体名称(字符串,例如 "Arial")。

    • bl: 是否加粗(0 不加粗,1 加粗)。

    • it: 是否斜体(0 不斜体,1 斜体)。

    • cl: 是否删除线(0 无删除线,1 有删除线)。

    • un: 是否下划线(0 无下划线,1 有下划线)。

    • bg: 背景颜色(十六进制颜色值,例如 "#FFFF00")。

    • ht: 水平对齐方式("left""center""right")。

    • vt: 垂直对齐方式("top""middle""bottom")。

    • tb: 是否自动换行(0 不换行,1 换行)。

    • tr: 文本旋转角度(数字,例如 45 表示旋转 45 度)。

    • pd: 内边距(对象,包含 toprightbottomleft 四个属性)。

    • bd: 边框样式,是一个对象数组,每个对象表示一条边框。例如:

    • bd: [
        { style: "thin", color: "#000000" }, // 上边框
        { style: "dashed", color: "#FF0000" }, // 下边框
      ]
3. 其他属性
  • sp: 是否被合并(0 未合并,1 已合并)。

  • mc: 合并单元格的信息(如果该单元格是合并单元格的一部分)。

    • r: 合并单元格的起始行。

    • c: 合并单元格的起始列。

    • rs: 合并单元格的行跨度。

    • cs: 合并单元格的列跨度。

注意事项

  1. 单元格为空

    • 如果单元格为空,getCellInfo 可能返回 null 或 undefined

  2. 合并单元格

    • 如果单元格是合并单元格的一部分,mc 属性会包含合并单元格的信息。

  3. 样式属性

    • 如果单元格没有自定义样式,s 属性可能为 null 或 undefined

未经作者允许,禁止转载。如需转载,请联系作者授权。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值