前言

苦于spreadjs学习教程和案例非常少,于是自己慢慢学习,慢慢总结出来,便于复习与巩固

申请试用可以获取官方技术人员免费30天技术指导

学习常用链接

spreadjs官网
spreadjs示例
spreadjs学习视频
spreadjs文档Api

常见功能

1、初始化模板
// template
  <gc-spread-sheets-designer
        @designerInitialized="designerInitialized"
      ></gc-spread-sheets-designer>
// js 
 import { testJson } from "/static/testJson.js";// 导入模板json文件
 
 designerInitialized(designer) { // 初始化方法
      this.designer = designer;
      this.spread = this.designer.getWorkbook();
      this.spread.fromJSON(testJson);
    },
2、设计模板,绑定数据源,可以设置对应的字段和对应的单元格类型,有表格,复选框,超链接,组合框,按钮,文本等等

注意 设计组合框时候需要单元格右键设置标签,例如你需要给下拉框选项动态赋值的时候,多个下拉框,不打唯一标签tag,不知道是哪个下拉框的
在这里插入图片描述

3、绑定数据源给单元格赋值(例如给上面设置的name赋值)
// 依赖
   import * as GC from "@grapecity/spread-sheets";
// 自定义方法里面
   let data = {
        name: "张三"
      };
   let spreadNS = GC.Spread.Sheets;
   let source = new spreadNS.Bindings.CellBindingSource(data);
   this.sheet.setDataSource(source);
4、绑定数据源给表格赋值(例如给上面设置的table赋值)
// 依赖
   import * as GC from "@grapecity/spread-sheets";
// 自定义方法里面
   let data = {
            table: [
	          {
	            goodName: "口罩",
	            number: 1000,
	          }
        ],
      };
   let spreadNS = GC.Spread.Sheets;
   // 给表格列设置成中文(例如number设置成中文)
   let columnsData = [
        { lable: "商品名称", property: "goodName" },
        { lable: "数量", property: "number" },
      ];
   let tableColumns = [];
   columnsData.forEach((item, index) => {
	    let tableColumn = new spreadNS.Tables.TableColumn();
	    tableColumn.name(item.lable);
	    tableColumn.dataField(item.property);
	    tableColumns.push(tableColumn);
   });
   let table = this.spread.getActiveSheet().tables.all()[0];
   table.bindColumns(tableColumns);
   // 赋值
   let source = new spreadNS.Bindings.CellBindingSource(data);
   this.sheet.setDataSource(source);
5、绑定数据源给下拉框动态赋值和选项赋值

选项动态赋值,思路就是找到打了唯一标签tag的下拉框坐标,然后根据坐标赋值即可,代码如下

// 首先封装一个根据标签tag获取坐标的方法
 returnRowColumn(tag) {
      var sheet = this.spread.getActiveSheet();
      var rowNum = sheet.getRowCount();
      var colNum = sheet.getColumnCount();
      for (var i = 0; i < rowNum; i++) {
        for (var j = 0; j < colNum; j++) {
          if (sheet.getCell(i, j).tag() == tag) {
            return [i, j];
          }
        }
      }
    },
// 方法里面根据坐标给给下拉框选项赋值

this.sheet = this.spread.getActiveSheet();
let rowColum = this.returnRowColumn('sex');
var combo = this.sheet.getCellType(rowColum[0], rowColum[1]);
combo.items([
            { text: "女", value: "0" },
            { text: "男", value: "1" },
]);
// 给下拉框赋值3、绑定数据源给单元格赋值 同理

5、获取模板
let content = JSON.stringify(this.designer.getWorkbook().toJSON());
console.log("content", content);
6、获取所有数据
 this.sheet = this.spread.getActiveSheet();
 let allData = this.sheet.getDataSource().getSource();
 console.log("allData ", allData);
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐