1、效果图
可以全部复制粘贴,也可以单独对某行、某列进行复制粘贴

(图片来源网络,侵删)
从excel复制粘贴到前端页面的table上

(图片来源网络,侵删)
2、实现代码
html部分:
js部分:
export default { name: 'testDemo', data() { return { tableData: [ { date: '2016-05-02', name: '王小虎', address: '上海市普陀区金沙江路 1518 弄', jg: '北京', gz: '学生', xz: '0', age: 18, sex: '女', tel: '13112345678', }, { date: '2016-05-04', name: '王小虎', address: '上海市普陀区金沙江路 1517 弄', jg: '上海', gz: '销售', xz: '10000', age: 19, sex: '男', tel: '13112345678', }, { date: '2016-05-01', name: '王小虎', address: '上海市普陀区金沙江路 1519 弄', jg: '上海', gz: '行政', xz: '5000', age: 31, sex: '男', tel: '13112345678', }, { date: '2016-05-03', name: '王小虎', address: '上海市普陀区金沙江路 1516 弄', jg: '江苏', gz: '做生意', xz: '50000+', age: 48, sex: '男', tel: '13112345678', } ], rowIndex: undefined, columnIndex: undefined, } }, methods: { /** 设置行、列索引 */ getCellIndex: function ({ row, column, rowIndex, columnIndex }) { row.index = rowIndex; column.index = columnIndex; }, /** 点击单元格 */ cellClick(row, column, cell, event) { // console.log(row, column, cell, event); this.rowIndex = row.index this.columnIndex = column.index }, /** 复制粘贴 */ pasteInfo(e) { try { e.preventDefault(); //阻止默认粘贴事件 e.stopPropagation(); //阻止事件冒泡 vAR Data = null; var clipboardData = e.clipboardData || window.clipboardData; // IE if (!clipboardData) { //chrome clipboardData = e.originalEvent.clipboardData; } data = clipboardData.getData("Text"); //复制过来的内容 //首先对源头进行解析 if (data && !data.includes('\r\n')) { // 单独复制文本,不是复制单个单元格 data = data+'\r\n' } var rowStrArray = data.split("\r\n"); //拆成多行 let rows = []; for (var i = 0; i this.tableData.length - 1){ break } let item = {} item = JSON.parse(JSON.stringify(this.tableData[this.rowIndex+j])) let num = 0 let numFlag = 0 //从哪一列开始粘贴:全部列都可以粘贴(即从第0列可以粘贴) for (var key in emptyObj) { if (!rows[j][num]) { break } // console.log('numFlag--', numFlag, 'this.columnIndex--', this.columnIndex, 'num-', num); if (this.columnIndex // 针对不能修改的列字段做处理,可以复制粘贴的列才做赋值。根据需求加下面的if判断 if (key !== 'jg' && key !== 'gz' && key !== 'xz') { item[key] = rows[j][num] } num = num + 1 } numFlag = numFlag + 1 } this.$set(this.tableData, this.rowIndex+j, item) } } catch(err) { this.$message.error('请选择粘贴位置') } }, } }