zoukankan      html  css  js  c++  java
  • 强大的表格控件handsometable,结合vue

    handsontable

    • handsontable是目前在前端界最接近excel的插件,可以执行编辑,复制粘贴,插入删除行列,排序等复杂操作。jQueryreactngvue版本,功能强大,是复杂表格的不二之选。本文简单介绍在vue-cli环境下怎么使用。

    • 案例:百度图说官网例子

    • 1.安装与配置

      • npm包安装

      npn install vue-handsontable-official --save
      npn install expose-loader --save-dev//不安装会有错误提示
      • webpack配置(vue-cli),在webpack.base.conf.js中添加一下代码

        {
              test: require.resolve('numbro'),
              loader: 'expose-loader?numbro'
            },
            {
              test: require.resolve('moment'),
              loader: 'expose-loader?moment'
            },
            {
              test: require.resolve('pikaday'),
              loader: 'expose-loader?Pikaday'
            },
            {
              test: require.resolve('zeroclipboard'),
              loader: 'expose-loader?ZeroClipboard'
            }

      2.具体API

      <template>
        <div>
            <div id="example-container" class="wrapper">
            <HotTable :root="root" :settings="hotSettings"></HotTable>
          </div>
        </div>
      
      </template>
      <script>
        import moment from 'moment'; //引入handsontable依赖的插件
        import numbro from 'numbro';
        import pikaday from 'pikaday'; //日期插件
        import Zeroclipboard from 'zeroclipboard';
        import Handsontable from 'handsontable';
        import HotTable from 'vue-handsontable-official';
        import Vue from 'vue';
      
        export default {
          data: function () {
            return {
              root: 'test-hot',
              hotSettings: {
                data: [        //数据,可以是数据,对象
                  ['20080101', 10, 11, 12, 13,true],
                  ['20090101', 20, 11, 14, 13,true],
                  ['20010101', 30, 15, 12, 13,true],
                  ['20010101', 32, 213, 21, 312,true],
                  ['20010201', 32, 213, 21, 312,true],
                  ['20010301', 32, 213, 21, 312,true],
                  ['20010401', 32, 213, 21, 312,true],
                  ['20010501', 32, 213, 21, 312,true],
                  ['20010601', 32, 213, 21, 312,true]
                ],
                startRows: 11,//行列范围
                startCols: 6,
                minRows: 5,  //最小行列
                minCols: 5,
                maxRows: 20,  //最大行列
                maxCols: 20,
                rowHeaders: true,//行表头
                colHeaders:   ['时间', 'Kia', 'Nissan', 'Toyota', 'Honda','123'],//自定义列表头or 布尔值
                minSpareCols: 2, //列留白
                minSpareRows: 2,//行留白
                currentRowClassName: 'currentRow', //为选中行添加类名,可以更改样式
                currentColClassName: 'currentCol',//为选中列添加类名
                autoWrapRow: true, //自动换行
                contextMenu: {   //自定义右键菜单,可汉化,默认布尔值
                  items: {
                    "row_above": {
                      name:'上方插入一行'
                    },
                    "row_below": {
                      name:'下方插入一行'
                    },
                    "col_left": {
                      name:'左方插入列'
                    },
                    "col_right": {
                      name:'右方插入列'
                    },
                    "hsep1": "---------", //提供分隔线
                    "remove_row": {
                      name: '删除行',
                    },
                    "remove_col": {
                      name: '删除列',
                    },
                    "make_read_only": {
                      name: '只读',
                    },                     
                    "borders": {
                      name: '表格线',
                    },
                    "commentsAddEdit": {
                      name: '添加备注',
                    },
                    "commentsRemove": {
                      name: '取消备注',
                    },
                    "freeze_column": {
                      name: '固定列',
                    },
                    "unfreeze_column": {
                      name: '取消列固定',
                    },
                    "hsep2": "---------",
                             }
                },//右键效果
                fillHandle: true, //选中拖拽复制 possible values: true, false, "horizontal", "vertical"
                fixedColumnsLeft: 0,//固定左边列数
                fixedRowsTop: 0,//固定上边列数
                mergeCells: [   //合并
                   {row: 1, col: 1, rowspan: 3, colspan: 3},  //指定合并,从(1,1)开始行3列3合并成一格
                   {row: 3, col: 4, rowspan: 2, colspan: 2}
                ],
                columns: [     //添加每一列的数据类型和一些配置
                  {
                    type: 'date',   //时间格式
                    dateFormat: 'YYYYMMDD',
                    correctFormat: true,
                    defaultDate: '19000101'
                  },
                  {
                    type: 'dropdown', //下拉选择
                    source: ['BMW', 'Chrysler', 'Nissan', 'Suzuki', 'Toyota', 'Volvo'],
                    strict: false   //是否严格匹配
                  },
                  {type: 'numeric'},  //数值
                  {type: 'numeric',
                    readOnly: true  //设置只读
                  },
                  { type: 'numeric',
                    format: '$ 0,0.00'},  //指定的数据格式
                  {type: 'checkbox'},  //多选框
                ],
                manualColumnFreeze: true, //手动固定列
                manualColumnMove: true, //手动移动列
                manualRowMove: true,   //手动移动行
                manualColumnResize: true,//手工更改列距
                manualRowResize: true,//手动更改行距
                comments: true, //添加注释
                cell: [
                  {row: 1, col: 1, comment: {value: 'this is test'}},
                ],
                customBorders:[],//添加边框
                columnSorting: true,//排序
                stretchH: 'all',//根据宽度横向扩展,last:只扩展最后一列,none:默认不扩展
      
              }
            };
          },
          name: 'SampleApp',
          components: {
            HotTable
          }
        }
      </script>
      
      <style>
        button{
          margin: 20px 20px;
        }
        .handsontable .currentRow {
          background-color: #E7E8EF;
        }
      
        .handsontable .currentCol {
          background-color: #F9F9FB;
        }
        #test-hot {
           800px;
          height: 800px;
          overflow: hidden;
        }
      </style>

      参考地址
      [GitHub地址]:https://github.com/handsontab...
      [handsontable官网]:https://handsontable.com

  • 相关阅读:
    java语法基础(总结)
    ZookeeperclientAPI之创建会话(六)
    对A轮的追逐变得越加狂热,当前距离互联网泡沫到底有多近?
    Java集合(一):Java集合概述
    深入了解Cookie(1)------selenium2进行Cookie操作的前奏
    Cocos2d-X开发中国象棋《九》走棋规则
    java中request,application,session三个域及参数简单示例
    在多浏览器使用JS复制内容到剪切板,无需插件
    初学structs2,结果类型简单示例
    使用servletAPI三种方式简单示例
  • 原文地址:https://www.cnblogs.com/yuwenjing0727/p/7462982.html
Copyright © 2011-2022 走看看