vue引入Excel表格插件的方法


Posted in Vue.js onApril 28, 2021

本文实例为大家分享了vue引入Excel表格插件的具体代码,供大家参考,具体内容如下

一、安装

npm install handsontable-pro @handsontable-pro/vue
npm install handsontable @handsontable/vue

二、引用(在页面引用)

import { HotTable } from ‘@handsontable-pro/vue'
import ‘…/…/node_modules/handsontable-pro/dist/handsontable.full.css'
import Handsontable from ‘handsontable-pro'

三、使用(在标签中使用)

<div id="hotTable" class="hotTable">
    <HotTable  ref="hotTableComponent" :settings="hotSettings"></HotTable>
</div>

四、数据中定义

data () {
    return {
      list: [],
      root: 'test-hot',
      hotSettings: {
        data: [ // 数据可以是二维数组,也可以是数组对象
        ],
        startRows: 3, // 行列范围
        startCols: 3,
        minRows: 20, // 最小行数
        minCols: 5, //最小列数
        maxRows: 20, // 最大行列
        maxCols: 20,//最大列数
        rowHeaders: true, // 行表头,可以使布尔值(行序号),可以使字符串(左侧行表头相同显示内容,可以解析html),也可以是数组(左侧行表头单独显示内容)。
        colHeaders: ['账户等级', '账户名称', '账户编号', '账户类别'], // 自定义列表头or 布尔值
        minSpareCols: 0, // 列留白
        minSpareRows: 0, // 行留白
        currentRowClassName: 'currentRow', // 为选中行添加类名,可以更改样式
        currentColClassName: 'currentCol', // 为选中列添加类名
        autoWrapRow: true, // 自动换行
        className: 'htCenter htMiddle', // 默认单元格样式,垂直居中
        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: '表格线'
            },
            'copy': {
              name: '复制'
            },
            'cut': {
              name: '剪切'
            },
            'commentsAddEdit': {
              name: '添加备注'
            },
            'commentsRemove': {
              name: '取消备注'
            },
            'freeze_column': {
              name: '固定列'
            },
            'unfreeze_column': {
              name: '取消列固定'
            },
            'mergeCells': {
              name: '合并单元格'
            },
            'alignment': {
              name: '文字位置'
            },
            'hsep2': '---------'
          }
        },
        afterChange: function (changes, source) { // 数据改变时触发此方法
          // console.log(this.getSourceData())
          this.list = this.getSourceData() // 获取表格里的数据
          // console.log(this.getPlugin('MergeCells').mergedCellsCollection.mergedCells) // 获取表格合并单元格的参数
        },
        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:默认不扩展
        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: [ // 设置表头名称
          {
            data: 'acctLevel'
          },
          {
            data: 'acctName'
          },
          {
            data: 'acctNo'
          },
          {
            data: 'acctType'
          },
        ]
      }
    }
  },

五、引入组件

components: {
    HotTable
 },

六、方法中使用

methods: {
    swapHotData: function () {
      // The Handsontable instance is stored under the `hotInstance` property of the wrapper component.
      // this.$refs.hotTableComponent.hotInstance.loadData([['new', 'data']])
      console.log(this.$refs.hotTableComponent.hotInstance.getPlugin('MergeCells').mergedCellsCollection.mergedCells)
    }
},

重点:

this.$refs.hotTableComponent.hotInstance // 获取表格数据,调用表格方法, ****** 指向表格
getPlugin(‘MergeCells').mergedCellsCollection.mergedCells) // 获取合并单元格之后需要的参数

注意:需要接口获取数据直接对this.hotSettings下data赋值就行

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Vue.js 相关文章推荐
实用的 vue tags 创建缓存导航的过程实现
Dec 03 Vue.js
Vue如何跨组件传递Slot的实现
Dec 14 Vue.js
Vue——前端生成二维码的示例
Dec 19 Vue.js
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
Jan 05 Vue.js
vue浏览器返回监听的具体步骤
Feb 03 Vue.js
手动实现vue2.0的双向数据绑定原理详解
Feb 06 Vue.js
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
Mar 01 Vue.js
springboot+VUE实现登录注册
May 27 Vue.js
Vue中foreach数组与js中遍历数组的写法说明
Jun 05 Vue.js
vue中div禁止点击事件的实现
Apr 02 Vue.js
vue elementUI批量上传文件
Apr 26 Vue.js
vue实现在data里引入相对路径
Jun 05 Vue.js
原生JS封装vue Tab切换效果
vue项目两种方式实现竖向表格的思路分析
vue首次渲染全过程
浅谈vue2的$refs在vue3组合式API中的替代方法
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
vue backtop组件的实现完整代码
vue中三级导航的菜单权限控制
Mar 31 #Vue.js
You might like
PHP中call_user_func_array()函数的用法演示
2012/02/05 PHP
浅析is_writable的php实现
2013/06/18 PHP
php源码分析之DZX1.5随机数函数random用法
2015/06/17 PHP
Yii框架操作cookie与session的方法实例详解
2019/09/04 PHP
获取元素距离浏览器周边的位置的方法getBoundingClientRect
2013/04/17 Javascript
使用javascript创建快捷方式的简单实例
2013/08/09 Javascript
对于this和$(this)的个人理解
2013/09/08 Javascript
JavaScript获取网页中第一个图片id的方法
2015/04/03 Javascript
Bootstrap布局组件应用实例讲解
2016/02/17 Javascript
纯JavaScript代码实现文本比较工具
2016/02/17 Javascript
javascript观察者模式实现自动刷新效果
2017/09/05 Javascript
Vue2.0用户权限控制解决方案
2017/11/29 Javascript
layui问题之模拟select点击事件的实例讲解
2018/08/15 Javascript
jQuery常见的遍历DOM操作详解
2018/09/05 jQuery
vue模块拖拽实现示例代码
2019/03/09 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
Python正则抓取网易新闻的方法示例
2017/04/21 Python
Django基础之Model操作步骤(介绍)
2017/05/27 Python
python实现12306抢票及自动邮件发送提醒付款功能
2018/03/08 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
Python返回数组/List长度的实例
2018/06/23 Python
Python发展简史 Python来历
2019/05/14 Python
pandas DataFrame索引行列的实现
2019/06/04 Python
python批量修改图片尺寸,并保存指定路径的实现方法
2019/07/04 Python
详解Python3定时器任务代码
2019/09/23 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
2020/06/02 Python
用python批量下载apk
2020/12/29 Python
python基于Kivy写一个图形桌面时钟程序
2021/01/28 Python
印度尼西亚最好的小工具在线商店:Erafone.com
2019/03/26 全球购物
人身意外保险授权委托书
2014/10/01 职场文书
高中生期中考试失利检讨书
2014/10/23 职场文书
小学教师2014年度工作总结
2014/12/03 职场文书
语文教师个人工作总结
2015/02/06 职场文书
医生个人年终总结
2015/02/28 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书
html2 canvas svg不能识别的解决方案
2021/06/03 HTML / CSS