websheet之 编辑器

一、默认编辑器

该单元格编辑器是控件自带的编辑器,用户不需要指定。

二、下拉选择

该单元格编辑器是控件自带的编辑器的一种。该控件需要你指定下拉的数据源。在下面的例子中,我们给C3和C6单元格指定了币种的下拉选择编辑器。参数见:六、 参数说明。

js 复制代码
   /**
    * 币种下拉
   */
  let wsheet = new websheet('HTML', yourElement);
    /**
   * 第一步 获取激活sheet
   */
    let activeSheet = wsheet.ActiveSheet();
    /**
     * 第二步 币种下拉控件,并注册
     */
    const cny = document.createElement('option');
    cny.value = 'CNY';
    cny.textContent = 'CNY-人民币';


    const usd = document.createElement('option');
    usd.value = 'USD';
    usd.textContent = 'USD-美元';


    const eur = document.createElement('option');
    eur.value = 'EUR';
    eur.textContent = 'EUR-欧元';


    let optionsBZ= [cny, usd, eur];

    activeSheet.setCellEditor('C3', websheet.Model.SelectCell, {data:optionsBZ,bextend:true});

    activeSheet.setCellEditor('C6', websheet.Model.SelectCell, {data:optionsBZ,bextend:true});
    /**
      * 第三步   重新绘制表格
      */
    activeSheet.setColWidth(1, 160);
    activeSheet.setColWidth(2, 160);
    activeSheet.setColWidth(3, 160);
    activeSheet.setColWidth(4, 160);
    activeSheet.setColWidth(5, 160);
    activeSheet.WorkFormula(); //重建公式
    activeSheet.cacl();//公式计算

    wsheet.BuildSheet();
    wsheet.Draw();

结果如下图:

在线代码

{.is-success}

三、日期时间编辑器

websheet控件使用小巧flatpickr控件来实现日期时间编辑器,版本是:4.6.13。

3.1 默认日期编辑器

js 复制代码
    activeSheet.SetCellValue('B3','2025-02-28');
    activeSheet.setCellEditor('B3', websheet.Model.DatePickCell);

3.2 月份

js 复制代码
    activeSheet.SetCellValue('B3','2025-02-28');
    activeSheet.setCellEditor('B3', websheet.Model.DatePickCell);

3.3 日期多选

js 复制代码
    activeSheet.SetCellValue('B3','2025-02-28');
    activeSheet.setCellEditor('B3', websheet.Model.DatePickCell);

3.4 日期时间

js 复制代码
    activeSheet.SetCellValue('B3','2025-02-28');
    activeSheet.setCellEditor('B3', websheet.Model.DatePickCell);

3.5 时间

js 复制代码
   activeSheet.SetCellValue('B3','2025-02-28');
   activeSheet.setCellEditor('B3', websheet.Model.DatePickCell);

其设置可以参考flatpickr的官方网站。

效果图如下:

在线代码

{.is-success}

四、进度条

该进度条展示控件是自带的编辑器的一种, 该控件根据单元格的绘制完成比例。完整代码如下:

js 复制代码
    /**
  * 第一步 获取激活sheet
  */
  let activeSheet = wsheet.ActiveSheet();
  activeSheet.SetCellValue('A3','Progress控件'); 
  
 /**
  * 第二步 一个下进度条控件,并注册
  */
  let redoptions={isVertical:false,
     background:  '#eee',
        foreground:  'red',
       textColor:  '#333',
  };
  activeSheet.SetCellValue('B3',0.01);//设置完成度

  activeSheet.setCellEditor('B3', websheet.Model.ProgressCell,redoptions);

  let yeoptions={isVertical:false,
     background:  '#eee',
        foreground:  'yellow',
       textColor:  '#333',
  };
  activeSheet.SetCellValue('B4',0.50);//设置完成度 

  activeSheet.setCellEditor('B4', websheet.Model.ProgressCell, yeoptions);

  activeSheet.SetCellValue('B5',1);//设置完成度 
 activeSheet.setCellEditor('B5', websheet.Model.ProgressCell);


 activeSheet.SetCellValue('B6','Aab');//设置完成度
  activeSheet.setCellEditor('B6', websheet.Model.ProgressCell);

 /**
   * 第三步   重新绘制表格
   */
 activeSheet.setColWidth(1, 160);
 activeSheet.setColWidth(2, 260);
 activeSheet.setColWidth(3, 160);
 activeSheet.setColWidth(4, 160);
 activeSheet.setColWidth(5, 160);
 activeSheet.WorkFormula(); //重建公式
 activeSheet.cacl();//公式计算

 wsheet.BuildSheet();
 wsheet.Draw();
 

在线代码

{.is-success}

上下文参数如下:

参数 说明 是否必须
background 背景颜色,例如'#eee' 否
foreground 前景颜色,'red' 否
textColor 文本颜色 否

五、自动选择代码

该编辑器可以根据输入自动筛选匹配的数据,可以通过鼠标或上下按键选择展示的内容,代码如下:

js 复制代码
    /**
  * 第一步 获取激活sheet
  */
  let activeSheet = wsheet.ActiveSheet();

  
 /**
  * 第二步 定义数据源,设置单元格编辑器为websheet.Model.CodeSelector
  */
 const codeData = [
           { code: "B01", description: "苹果" },
           { code: "B02", description: "香蕉" },
           { code: "B03", description: "橙子" },
           { code: "B04", description: "西瓜" },
           { code: "B05", description: "葡萄" },
           { code: "A01", description: "电视机" },
           { code: "A02", description: "冰箱" },
           { code: "A03", description: "洗衣机" },
           { code: "C01", description: "笔记本电脑" },
           { code: "C02", description: "手机" },
           { code: "C03", description: "笔记本电脑1" },
           { code: "C04", description: "手机1" }
       ];

 activeSheet.setCellEditor('C1:C10', websheet.Model.CodeSelector, {showdata:codeData,placeholder:'选择代码',bextend:true});
 activeSheet.setColWidth(3, 250)

 /**
   * 第三步   重新绘制表格
   */

 wsheet.BuildSheet();
 wsheet.Draw();
 

在线代码

{.is-success}

上下文参数如下:

参数 说明 是否必须
showdata 需要展示的数组,对象格式"{code: "B01", description: "苹果" }" 是
placeholder 提示词,默认'代码选择' 否
bextend 名称是否填充 ,默认'false' 否

六、 参数说明

setCellEditor的参数说明如下:

参数 说明 是否必须
range 单元格地址,例如'A1' 是
widget 视图控件,例如websheet.Model.DatePickCell控件 是
contex 上下文,例如展示币种控件需要币种的数据源 否

七、待开发的控件

  1. Radio 单选框
  2. Checkbox 多选框
  3. Switch 开关
  4. Slider 滑块

八、自定义编辑器

如果你有自己编辑控件和展示内容的需求,可以参考自定义展示控件。

相关推荐
子兮曰3 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰3 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
前端小万3 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝3 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋3 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
伞伞悦读3 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
卡布鲁3 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
C语言小火车3 天前
C/C++ 为什么需要编译器?
开发语言·c++
李少兄3 天前
JavaScript 隐式全局变量解析
javascript