当前位置: 首页 > news >正文

如何用 vxe-table 实现粘贴数据自动进入新增行与新增列,数据无限扩充

如何用 vxe-table 实现粘贴数据自动进入新增行与新增列,数据无限扩充,对于大部分业务操作场景,有时需要从 excel 复制数据并粘贴到表格中,由于粘贴的数据会列多于表格定义的行与列,多出的数据需要能支持自动新增与自行新增列,vxe-table提供非常简单的配置方式可以直接支持。

自动新增行

当粘贴数据时,如果粘贴的行数超过表格的行数,可以通过 clip-config.isRowIncrement 自动新增临时行

table_clip_increment_rows

<template><div><vxe-grid v-bind="gridOptions"></vxe-grid></div>
</template><script setup>
import { reactive } from 'vue'const gridOptions = reactive({border: true,height: 400,showOverflow: true,keepSource: true,columnConfig: {resizable: true},mouseConfig: {area: true // 是否开启区域选取},areaConfig: {multiple: true // 是否启用多区域选取功能},editConfig: {mode: 'cell', // 单元格编辑模式trigger: 'dblclick', // 双击单元格激活编辑状态showStatus: true // 显示数据编辑状态},keyboardConfig: {isClip: true, // 是否开启复制粘贴isEdit: true, // 是否开启任意键进入编辑(功能键除外)isDel: true, // 是否开启删除键功能isEsc: true // 是否开启Esc键关闭编辑功能},clipConfig: {isRowIncrement: true // 如果粘贴的行数超过表格的行数,自动新增临时行// createRowsMethod ({ insertRows, pasteCells }) {//   console.log(pasteCells)//   // 自定义返回新的行数据//   return insertRows// }},columns: [{ type: 'seq', fixed: 'left', width: 60 },{ field: 'name', fixed: 'left', title: 'name', editRender: { name: 'input' } },{ field: 'role', title: 'Role', editRender: { name: 'input' } },{ field: 'sex', title: 'sex', editRender: { name: 'input' } },{ field: 'num', title: 'Num', editRender: { name: 'input' } },{ field: 'age', title: 'age', editRender: { name: 'input' } },{ field: 'address', title: 'Address', width: 200, editRender: { name: 'input' } }],data: [{ id: 10001, name: 'Test1', role: 'Develop', sex: 'Man', num: 23, age: 28, address: 'Shengzhen' },{ id: 10002, name: 'Test2', role: 'Test', sex: 'Women', num: 23, age: 22, address: 'Guangzhou' },{ id: 10003, name: 'Test3', role: 'PM', sex: 'Man', num: 23, age: 32, address: 'Shanghai' },{ id: 10004, name: 'Test4', role: 'Designer', sex: 'Women', num: 456, age: 24, address: 'Shanghai' },{ id: 10005, name: 'Test5', role: 'Designer', sex: 'Women', num: 23, age: 42, address: 'Guangzhou' },{ id: 10006, name: 'Test6', role: 'Designer', sex: 'Man', num: 23, age: 38, address: 'Shengzhen' },{ id: 10007, name: 'Test7', role: 'Test', sex: 'Women', num: 100, age: 24, address: 'Shengzhen' },{ id: 10008, name: 'Test8', role: 'PM', sex: 'Man', num: 345, age: 34, address: 'Shanghai' }]
})
</script>

自动新增列

当粘贴数据时,如果粘贴的列数超过表格的列数时,可以通过 clip-config.isColumnIncrement 自动新增临时列

table_clip_increment_cols

<template><div><vxe-grid v-bind="gridOptions"></vxe-grid></div>
</template><script setup>
import { reactive } from 'vue'const gridOptions = reactive({border: true,height: 400,showOverflow: true,keepSource: true,columnConfig: {resizable: true},mouseConfig: {area: true // 是否开启区域选取},areaConfig: {multiple: true // 是否启用多区域选取功能},editConfig: {mode: 'cell', // 单元格编辑模式trigger: 'dblclick', // 双击单元格激活编辑状态showStatus: true // 显示数据编辑状态},keyboardConfig: {isClip: true, // 是否开启复制粘贴isEdit: true, // 是否开启任意键进入编辑(功能键除外)isDel: true, // 是否开启删除键功能isEsc: true // 是否开启Esc键关闭编辑功能},clipConfig: {isColumnIncrement: true // 如果粘贴的列数超过表格的列数时,自动新增临时列// createColumnsMethod ({ insertColumns, pasteCells }) {//   console.log(pasteCells)//   // 自定义返回新的列配置//   return insertColumns// }},columns: [{ type: 'seq', fixed: 'left', width: 60 },{ field: 'name', fixed: 'left', title: 'name', editRender: { name: 'input' } },{ field: 'role', title: 'Role', editRender: { name: 'input' } },{ field: 'sex', title: 'sex', editRender: { name: 'input' } },{ field: 'num', title: 'Num', editRender: { name: 'input' } },{ field: 'age', title: 'age', editRender: { name: 'input' } },{ field: 'address', title: 'Address', width: 200, editRender: { name: 'input' } }],data: [{ id: 10001, name: 'Test1', role: 'Develop', sex: 'Man', num: 23, age: 28, address: 'Shengzhen' },{ id: 10002, name: 'Test2', role: 'Test', sex: 'Women', num: 23, age: 22, address: 'Guangzhou' },{ id: 10003, name: 'Test3', role: 'PM', sex: 'Man', num: 23, age: 32, address: 'Shanghai' },{ id: 10004, name: 'Test4', role: 'Designer', sex: 'Women', num: 456, age: 24, address: 'Shanghai' },{ id: 10005, name: 'Test5', role: 'Designer', sex: 'Women', num: 23, age: 42, address: 'Guangzhou' },{ id: 10006, name: 'Test6', role: 'Designer', sex: 'Man', num: 23, age: 38, address: 'Shengzhen' },{ id: 10007, name: 'Test7', role: 'Test', sex: 'Women', num: 100, age: 24, address: 'Shengzhen' },{ id: 10008, name: 'Test8', role: 'PM', sex: 'Man', num: 345, age: 34, address: 'Shanghai' }]
})
</script>
http://www.jsqmd.com/news/57148/

相关文章:

  • 2025成都全包装修权威推荐,资质服务双优,装修/整装/家装/房屋装修品牌选择指南
  • 回头看基础,TemplatePrompt和MessagePrompt
  • 2025年碳纤木门制造商权威推荐榜单:套装门/实木门/无漆木门源头厂家精选
  • 2025年氯化镁阻化剂定制厂家权威推荐榜单:LH—Z01阻化剂‌/煤矿专用阻化剂‌/MSF—II阻化剂‌源头厂家精选
  • 2025商丘特色餐饮品牌口碑榜:商丘任广涛干锅鸭怎么样?
  • 【AP出版 | CPCI检索】第八届人文教育与社会科学国际学术会议(ICHESS 2025)
  • 10418_基于SSM的旅游管理系统
  • 2025年广州儿童黄埔军校夏令营学校权威推荐榜单:广州黄埔军校夏令营招生服务商/广州小学生黄埔军校军事夏令营培训/广州黄埔军校军事夏令营公司精选
  • 2025年耙式干燥设备制造厂权威推荐榜单:新型耙式干燥机‌/真空耙式干燥机‌/耙式干燥器‌源头厂家精选
  • 【IEEE出版 | EI检索】第二届机器学习、计算智能与模式识别国际学术会议(MLCIPR 2025)
  • 深度揭秘:湖南省网安基地——由“安服公司”开的网络安全培训班,到底是坑还是宝藏?​ - 指南
  • 百度不收录境外服务器是真是假?
  • SQL子查询完全指南:从零掌握嵌套查询的三种用法与最佳实践 - 详解
  • Rust自定义迭代器
  • 适合幼儿园开展的STEM课程品牌介绍及分析
  • 分库分表全面总结
  • 2025年深圳品牌策划公司推荐排行榜:深圳品牌策划公司能整合
  • 2025年中国十大网店代运营公司推荐:代运营哪家强?
  • 2025年户外橡胶地垫制造厂权威推荐榜单:减震橡胶地垫/公园橡胶地垫/复合橡胶地垫源头厂家精选
  • 靠谱的国际短信验证码平台,短信验证码服务商盘点,兼顾速度、安全与成本控制!
  • 【JPCS出版 | EI检索】第七届国际科技创新学术交流大会暨机械工程与自动化国际学术会议(MEA 2025)
  • 这个代码有什么用
  • 2025年日字扣生产厂家权威推荐榜单:箱包塑料配件‌/塑料制品‌/塑胶扣具‌源头厂家精选
  • 非接图标(适用于屏幕大小为240*320)
  • 2025年磷酸铁回转窑生产厂家权威推荐榜单:回转窑干燥设备‌/磷酸铁锂回转窑‌/大豆渣回转窑干燥机‌源头厂家精选
  • JavaScript基础笔记碎片-对象、数组、Map与Set
  • java17版本,用IDEA开发,在JavaFX中无法找到com.google.gson。
  • 2025手机配件到迪拜物流专线送仓TOP5权威推荐:甄选企业
  • Visual Studio Code 轻量不简陋!VS Code:零基础编程者的第一款「万能编辑器」安装+中文设置步骤
  • 推荐几家海外展会推广公司,五家效果不错的海外展会营销推广平台详细介绍