x-sheet 开发教程:初始化配置自定义布局

介绍

x-sheet 是一款高性能 Web JavaScript Canvas 电子表格,之前小编写过一篇 x-sheet 入门体验,简单介绍了一下如何使用 x-sheet。这次我们继续深入一下,了解下 x-sheet 还支持哪些配置,通过修改配置可以自定义我们的表格布局和特性。

最新原文 X-Sheet 开发教程:初始化配置自定义布局

配置

小编在使用 x-sheet 过程中,总结出了一份相对比较全的配置清单,可以参考下。

const settings = {
      // 工作簿配置
      workConfig: {
        // 创建时间
        created: "",
        // 修改时间
        modified: "",
        // 作者信息
        creator: "",
        // 最后修改作者
        lastModifiedBy: "",
        // 工作簿名称
        name: "x-sheet",
        // 顶部配置
        top: {
          // 顶部选项栏配置
          option: {
            // 是否显示选项栏
            show: true,
          },
          // 顶部菜单栏配置
          menu: {
            // 是否显示菜单栏
            show: true,
          },
        },
        // 主体配置
        body: {
          // 工作表菜单配置
          sheetConfig: {
            // 是否显示右击菜单
            showMenu: true,
          },
          // 工作表主体配置
          sheets: [
            {
              // 工作表名称
              name: "sheet1",
              // 表格配置
              tableConfig: {
                // 标题行列配置
                index: {
                  // 标题行高度
                  height: 30,
                  // 标题列宽度
                  width: 50,
                  // 标题行列边框颜色
                  gridColor: "rgb(193,193,193)",
                  // 标题行列字体大小
                  size: 12,
                  // 标题行列字体颜色
                  color: "rgb(0,0,0)",
                },
                // 表格整体配置
                table: {
                  // 是否显示网格线
                  showGrid: true,
                  // 表格区域背景颜色
                  background: "rgb(255,255,255)",
                  // 网格线颜色
                  gridColor: "rgb(225,225,225)",
                },
                // 行配置
                rows: {
                  // 自定义最大行数
                  len: 100,
                  // 默认行高
                  height: 30,
                  // 行配置数据
                  data: [
                    {
                      // 自定义行高,未设置的会取默认行高
                      height: 100
                    },
                  ],
                },
                // 列配置
                cols: {
                  // 自定义最大列数
                  len: 25,
                  // 默认列宽
                  width: 110,
                  // 行配置数据
                  data: [{
                    // 自定义列宽,未设置的会取默认列宽
                    width: 200
                  }],
                },
                // 冻结范围
                xFixedView: {
                  // 冻结列索引,-1为不冻结
                  fxLeft: -1,
                  // 冻结行索引,-1为不冻结
                  fxTop: -1,
                },
                // 冻结分割线样式
                xFixedBar: {
                  // 冻结行分割线高度
                  height: 16,
                  // 冻结列分割线宽度
                  width: 26,
                  // 冻结分割线背景色
                  background: "rgb(234,234,234)",
                  // 冻结分割线按钮背景色
                  buttonColor: "rgb(193,193,193)",
                },

                // 表格数据,二维数组
                data: [
                  [
                    // A1 单元格数据
                    {
                      // 单元格类型
                      contentType: 2,
                      // 字体属性
                      fontAttr: {
                        // 换行
                        textWrap: 2,
                        // 方向
                        direction: "vertical",
                      },
                      // 富文本配置
                      richText: {
                        // 富文本具体字段信息
                        rich: [
                          // 第一个段富文本
                          {
                            // 字体
                            name: "Arial",
                            // 字体大小
                            size: 14,
                            // 文本内容
                            text: "我是",
                            // 字体颜色
                            color: "rgb(255,0,2)",
                            // 是否加粗
                            bold: false,
                            // 是否斜体
                            italic: false,
                            // 是否有删除线
                            strikethrough: false,
                            // 是否有下划线
                            underline: false,
                          },
                          {
                            // 第二段富文本包含的字符
                            // 如果没有配置样式,就取单元格的样式,单元格也没有设置样式,就取默认的样式
                            text: "富文本",
                          },
                        ],
                      },
                    },
                    {
                      // 背景颜色
                      background: "rgb(255,255,0)",
                      // 单元格图标
                      icons: [],
                      // 自定义属性
                      custom: {},
                      // 字体测量尺子
                      ruler: undefined,
                      // 格式化类型
                      format: "default",
                      // 单元格公式
                      formula: undefined,
                      // 文本内容
                      text: "Text",
                      // 格式化后的内容
                      formatText: "Text",
                      // 内容的宽度
                      contentWidth: 100,
                      // 内容的高度
                      contentHeight: 100,
                      // 字体属性
                      fontAttr: {
                        // 字体
                        name: "Arial",
                        // 字体大小
                        size: 14,
                        // 字体颜色
                        color: "rgb(0,0,0)",
                        // 是否加粗
                        bold: false,
                        // 是否斜体
                        italic: false,
                        // 是否有删除线
                        strikethrough: false,
                        // 是否有下划线
                        underline: false,
                        // 内边距
                        padding: 5,
                        // 文本角度
                        angle: 0,
                        // 文本方向
                        direction: "horizontal", // 'horizontal' 'vertical' 'angle' 'bar'
                        // 水平对齐方式
                        align: "left", // 'left' 'center' 'right'
                        // 垂直对齐方式
                        verticalAlign: "middle", // 'top' 'middle' 'bottom'
                        // 自动换行
                        textWrap: 1, // 1 溢出 2 换行 3 截断
                      },
                      // 边框属性
                      borderAttr: {
                        // 左边框
                        left: {
                          // 层级
                          zIndex: 0,
                          // 是否显示
                          display: true,
                          // 宽度类型
                          widthType: "low", // 'low' 'medium' 'high'
                          // 颜色
                          color: "rgb(0,0,0)",
                          // 线条类型
                          type: 0, // 0 solid 1 dotted 2 point 3 double
                        },
                        // 右边框
                        right: {
                          zIndex: 0,
                          display: true,
                          widthType: "medium",
                          color: "rgb(0,255,0)",
                          type: 0,
                        },
                        // 上边框
                        top: {
                          zIndex: 0,
                          display: false,
                          widthType: "high",
                          color: "rgb(0,0,255)",
                          type: 0,
                        },
                        // 下边框
                        bottom: {
                          zIndex: 0,
                          display: true,
                          widthType: "high",
                          color: "rgb(0,255,255)",
                          type: 3,
                        },
                      },
                    },
                  ],
                ],
                // 保护配置
                protection: {
                  protections: [],
                },
                // 是否保护
                sheetProtection: true,
                // 合并单元格
                merge: { merges: ["A2:B3", "D5:H9"] },
              },
            },
          ],
          // 工作表选项卡配置
          tabConfig: {
            // 是否显示选项卡右击菜单
            showMenu: true,
          },
        },
        // 底部状态栏配置
        bottom: {
          // 是否显示状态栏
          show: true,
        },
      },
    };

    // 初始化x-sheet
    new XSheet("#demo1", settings);

总结

x-sheet 目前还在开发中,部分 API 还不稳定,后续有变化小编会及时更新。

参考

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,542评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,822评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,912评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,449评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,500评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,370评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,193评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,074评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,505评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,722评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,841评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,569评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,168评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,783评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,918评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,962评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,781评论 2 354

推荐阅读更多精彩内容