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+vant实现购物车全选和反选功能
Nov 17 Vue.js
vue中echarts的用法及与elementui-select的协同绑定操作
Nov 17 Vue.js
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
Nov 18 Vue.js
vue3.0自定义指令(drectives)知识点总结
Dec 27 Vue.js
浅析vue中的nextTick
Dec 28 Vue.js
vue实现验证用户名是否可用
Jan 20 Vue.js
vue3.0封装轮播图组件的步骤
Mar 04 Vue.js
详解Vue的options
May 15 Vue.js
详解vue身份认证管理和租户管理
May 25 Vue.js
一定要知道的 25 个 Vue 技巧
Nov 02 Vue.js
详解Vue中$props、$attrs和$listeners的使用方法
Feb 18 Vue.js
分享一个vue实现的记事本功能案例
Apr 11 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
基于wordpress主题制作的具体实现步骤
2013/05/10 PHP
php根据用户语言跳转相应网页
2015/11/04 PHP
javascript对象的property和prototype是这样一种关系
2007/03/24 Javascript
Javascript模块模式分析
2008/05/16 Javascript
javascript或asp实现的判断身份证号码是否正确两种验证方法
2009/11/26 Javascript
jQuery实现倒计时按钮功能代码分享
2014/09/03 Javascript
简单介绍JavaScript的变量和数据类型
2015/06/03 Javascript
JS密码生成与强度检测完整实例(附demo源码下载)
2016/04/06 Javascript
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
2017/05/25 Javascript
详解vue前后台数据交互vue-resource文档
2017/07/19 Javascript
微信小程序引用公共js里的方法的实例详解
2017/08/17 Javascript
基于Vue2.0+ElementUI实现表格翻页功能
2017/10/23 Javascript
微信小程序实现长按删除图片的示例
2018/05/18 Javascript
图解javascript作用域链
2019/05/27 Javascript
JavaScript实现图片轮播特效
2019/10/23 Javascript
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
python计算书页码的统计数字问题实例
2014/09/26 Python
Python如何实现MySQL实例初始化详解
2017/11/06 Python
matplotlib调整子图间距,调整整体空白的方法
2018/08/03 Python
Python微信操控itchat的方法
2019/05/31 Python
Python完成毫秒级抢淘宝大单功能
2019/06/06 Python
python里dict变成list实例方法
2019/06/26 Python
python命令行工具Click快速掌握
2019/07/04 Python
python Socket网络编程实现C/S模式和P2P
2020/06/22 Python
python dict如何定义
2020/09/02 Python
荷兰领先的百货商店:De Bijenkorf
2018/10/17 全球购物
捷克建筑材料网上商店:DEK.cz
2021/03/06 全球购物
高中军训感言200字
2014/02/23 职场文书
个人贷款担保书
2014/04/01 职场文书
纪念九一八事变83周年国旗下讲话稿
2014/09/15 职场文书
2014年社区工会工作总结
2014/12/18 职场文书
民政工作个人总结
2015/02/28 职场文书
新教师教学工作总结
2015/08/14 职场文书
javascript代码简写的几种常用方式汇总
2021/08/23 Javascript
详解Vue的列表渲染
2021/11/20 Vue.js
python实现对doc、txt、xls等文档的读写操作
2022/04/02 Python