handsontable

  • handsontable是目前在前端界最接近excel的插件,可以执行编辑,复制粘贴,插入删除行列,排序等复杂操作。jQuery、react、ng和vue版本,功能强大,是复杂表格的不二之选。本文简单介绍在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 {
    width: 800px;
    height: 800px;
    overflow: hidden;
    }
    </style>

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

强大的表格控件handsometable,结合vue的更多相关文章

  1. Atitit  项目界面h5化静态html化计划---vue.js 把ajax获取到的数据 绑定到表格控件 v2 r33.docx

    Atitit  项目界面h5化静态html化计划---vue.js 把ajax获取到的数据 绑定到表格控件 v2 r33.docx 1. 场景:应用在项目列表查询场景下1 1.1. 预计初步掌握vue ...

  2. 葡萄城首席架构师:前端开发与Web表格控件技术解读

    讲师:Issam Elbaytam,葡萄城集团全球首席架构师(Chief Software Architect of GrapeCity Global).曾任 Data Dynamics.Inc 创始 ...

  3. 【新功能前瞻】SpreadJS 纯前端表格控件V12.2:打印增强、拖拽填充等六大特性

    新版本来袭:葡萄城 SpreadJS 纯前端表格控件的全新版本 V12.2 将于8月正式发布! 作为一款备受华为.招商银行.中国平安.苏宁易购等行业专家和前端开发者认可的纯 JavaScript 电子 ...

  4. 如何在web中实现类似excel的表格控件

    Execl功能非常强大,内置的很多函数或公式可以大大提高对数据的加工处理能力.那么在web中有没有类似的控件呢?经过一番搜寻,发现handsontable具备了基本的excel功能支持公式,同时能对数 ...

  5. 最好的Angular2表格控件

    现在市面上有大量的JavaScript数据表格控件,包括开源的第三方的和自产自销的.可以说Wijmo的Flexgrid是目前适应Angular 2的最好的表格控件. Angular 2数据表格基本要求 ...

  6. 12款 JavaScript 表格控件(DataGrid)

    JavaScript 表格控件可以操作大数据集的 HTML表格,提供各种功能,如分页.排序.过滤以及行编辑.在本文中,我们整理了13个最好的 JavaScript 表格插件分享给开发人员,开发者可以很 ...

  7. SNF快速开发平台MVC-各种级联绑定方式,演示样例程序(包含表单和表格控件)

    做了这么多项目,经常会使用到级联.联动的情况. 如:省.市.县.区.一级分类.二级分类.三级分类.仓库.货位. 方式:有表单需要做级联的,还是表格行上需要做级联操作的. 实现:实现方法也有很多种方式. ...

  8. SNF开发平台WinForm-Grid表格控件大全

    我们在开发系统时,会有很多种控件进行展示,甚至有一些为了方便的一些特殊需求. 那么下面就介绍一些我们在表格控件里常用的方便的控件:   1.Grid表格查询条 Grid表格下拉 3.Grid表格弹框选 ...

  9. SNF快速开发平台MVC-EasyUI3.9之-DataGrid表格控件如何增加右键菜单

    如题,我们在项目开发当中会遇到需要,表格控件增加右键菜单的使用. 下面我们就以SNF框架增加右键菜单步骤如下: 1.在加载页面当中增加如下菜单定义 <div id="mm" ...

随机推荐

  1. PyNN standard model(转)

    PyNN standard model 转自http://blog.csdn.net/qq_34886403/article/details/76667477

  2. [转载]MySQL concat函数的使用

    MySQL concat函数是MySQL数据库中众多的函数之一,下文将对MySQL concat函数的语法和使用进行说明,供您参考和学习. MySQL concat函数使用方法:CONCAT(str1 ...

  3. K-M-P

    分段K-M-P 只需要记录上一段已经匹配了的长度,再接着从匹配下一段就可以了.

  4. ABAP权限检查,TCode与权限对象进行关联

    一.确认权限对象,和关联字段: Tcode:SU21 维护权限对象例如"M_MSEG_WMB",它关联字段为'WERKS'M_MSEG_WMB 物料凭证:工厂 二.在ABAP代码中 ...

  5. rar 7z文件打包

    把D:\file目录下的所有东西打包为file.rar放到D:\目录下, Rar.exe是放在c盘根目录下 >>C:\Rar.exe a -k -r -s -m1 D:\file.rar ...

  6. 剑指offer 面试42题

    面试42题: 题目:连续子数组的最大和 题:输入一个整形数组,数组里有正数也有负数.数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n) 解题思路:在数组里从前 ...

  7. sorted 、 filter 、 map

    sorted   排序函数 内置函数中提供了一个通用的排序方案 ,返回一个新的列表,不会改变原数据 语法: sorted(iterable, key, reverse) key: 排序方案, sort ...

  8. iOS 52个技巧学习心得笔记 第一章 熟悉OC

    1 .简单了解OC2 .在类的头文件中尽量少引入其他头文件3 .多用字面量语法 少用与之等价的方法 4 .多用类型常量 少用 #define 预处理指令5 .用枚举表示状态,选项,状态码 .简单了解O ...

  9. Jquery.ScrollLoading图片延迟加载技术

    关于分屏加载图片,像天猫.京东等电商图片较多页面很长,就采用了延迟加载技术. 目前很流行的做法就是滚动动态加载,显示屏幕之外的图片默认是不加载的, 随着页面的滚动,显示区域图片才被动态加载. 原理其实 ...

  10. JPEGView——专业、免费、开源的图像浏览器

    虽叫JPEGView,它不仅支持jpeg图像格式,主流的图像格式它都支持. 试一试你就知道它有多强大了.