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

news/2025/12/1 15:43:24/文章来源:https://www.cnblogs.com/qaz666/p/19293040

如何用 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.mzph.cn/news/983069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025成都全包装修权威推荐,资质服务双优,装修/整装/家装/房屋装修品牌选择指南

引言:透明整装时代,如何甄选值得托付的成都装修公司? 随着成都家装消费持续升级,业主对全包装修、整装交付、环保工艺与设计落地一致性的要求日益提高。然而,市场仍存在施工队伍不稳、材料以次充好、增项频发、售…

回头看基础,TemplatePrompt和MessagePrompt

最近想实现一个简单的功能:用户输入一个餐厅名关键词,agent调用高德地图api,拿到餐厅的一些关键信息,如准确店名、地址(文字地址+经纬度)、评分、人均、营业时间等,接下来agent将接口返回的数据整理,形成更精简…

2025年碳纤木门制造商权威推荐榜单:套装门/实木门/无漆木门源头厂家精选

碳纤木门,作为现代门业中融合了前沿材料科技与家居美学的高端产品,凭借其卓越的强度重量比、优异的耐用性、出众的环保性能以及时尚的外观设计,正迅速成为住宅、商业及工程项目中的热门选择。选择一家技术扎实、品控…

2025年氯化镁阻化剂定制厂家权威推荐榜单:LH—Z01阻化剂‌/煤矿专用阻化剂‌/MSF—II阻化剂‌源头厂家精选

在煤矿安全生产标准不断提升与环保政策日益严格的背景下,氯化镁阻化剂作为抑制煤炭自燃的关键材料,其市场需求正朝着高效、环保、定制化的方向深度发展。据行业调研,应用优质阻化剂后,煤炭的自燃发火期能够延长约2…

2025商丘特色餐饮品牌口碑榜:商丘任广涛干锅鸭怎么样?

本榜单依托河南、山东等区域餐饮市场调研与真实消费口碑,深度筛选出5家聚焦特色干锅赛道的标杆品牌,为消费者就餐选型、创业者加盟决策提供客观依据,助力精准匹配适配的餐饮品牌。 TOP1 推荐:商丘任广涛餐饮管理有…

【AP出版 | CPCI检索】第八届人文教育与社会科学国际学术会议(ICHESS 2025)

第八届人文教育与社会科学国际学术会议(ICHESS 2025)于2025年12月19-21日在中国西安举行。【西安交通大学主办|高录用|快见刊|稳检索】 第八届人文教育与社会科学国际学术会议(ICHESS 2025) 2025 8th Internati…

10418_基于SSM的旅游管理系统

1、项目包含 项目源码、项目文档、数据库脚本、软件工具等资料; 带你从零开始部署运行本套系统。 2、项目介绍 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通…

2025年广州儿童黄埔军校夏令营学校权威推荐榜单:广州黄埔军校夏令营招生服务商/广州小学生黄埔军校军事夏令营培训/广州黄埔军校军事夏令营公司精选

在素质教育备受重视的当下,融合了纪律训练、品格塑造与爱国主义教育的军事主题夏令营,成为众多广州家庭暑期规划的热点。数据显示,2023年全国青少年夏令营参与人数已突破800万,市场持续扩大。其中,以“黄埔精神”…

2025年耙式干燥设备制造厂权威推荐榜单:新型耙式干燥机‌/真空耙式干燥机‌/耙式干燥器‌源头厂家精选

在化工、制药及新能源材料等领域,对高粘度、热敏性或易氧化物料的安全高效干燥需求日益增长。耙式干燥设备以其独特的间歇式、低氧操作特性,正成为此类物料干燥工艺的核心装备。根据行业技术评估,真空耙式干燥机可使…

【IEEE出版 | EI检索】第二届机器学习、计算智能与模式识别国际学术会议(MLCIPR 2025)

第二届机器学习、计算智能与模式识别国际学术会议(MLCIPR 2025)将于2025年12月19-21日在南京召开。【 出版社快至提交后2个月检索;两大高校联合主办;收稿主题广泛,快审核高录用率】 第二届机器学习、计算智能与模…

深度揭秘:湖南省网安基地——由“安服公司”开的网络安全培训班,到底是坑还是宝藏?​ - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

百度不收录境外服务器是真是假?

结论:假的。百度官方明确表示对境外服务器没有歧视,只要符合条件,境外服务器网站完全可以被收录。 官方态度与事实 百度官方在多个场合明确表态:"百度对海外站点没有歧视。我们对国内和国外空间的站点是一样的…

面试官最喜欢问的Webpack中的loader和plugin到底有什么区别?

基本概念​Loader​:对单个资源(文件)做转换的函数(把一个文件从一种内容转换为另一种内容),在 module 层面运行。 ​Plugin​:在整个构建过程的生命周期里插入钩子逻辑(修改编译器、生成资源、注入行为等),…

SQL子查询完全指南:从零掌握嵌套查询的三种用法与最佳实践 - 详解

SQL子查询完全指南:从零掌握嵌套查询的三种用法与最佳实践 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "…

Rust自定义迭代器

Rust自定义迭代器 Rust要自定迭代器要实现Iterator这个Trait,就可以使用next方法,也可以实现IntoIterator方法就可以把对象转换为一个迭代器。这与Python中的可迭代对象和迭代器的概念类似。在Python中,实现了__ite…

适合幼儿园开展的STEM课程品牌介绍及分析

在当前以科技教育为主的大环境,幼儿园如何开展STEM教育,哪个课程品牌更容易落地,风险更小呢? 在教育部等七部门发布《关于加强中小学科技教育的意见》的大背景,很多人在思考:在幼儿园阶段引入STEM教育(科学、技…

分库分表全面总结

目录分库分表全面总结分库分表的本质分库分表方式示例1:垂直分库(按业务拆分到不同数据库)示例2:垂直分表(按列拆分到不同表)示例3:水平分库(数据分布到不同数据库的同名表)示例4:水平分表(数据分布到同库的…

2025年深圳品牌策划公司推荐排行榜:深圳品牌策划公司能整合

在企业品牌竞争白热化的当下,选择一家能整合资源、提供稳定优质服务的深圳品牌策划公司,成为众多企业突破增长瓶颈的关键。为帮助企业精准选型,我们从资源整合能力、服务稳定性、服务质量、客户口碑及案例落地效果五…

2025年中国十大网店代运营公司推荐:代运营哪家强?

本榜单依托产业带深度调研与工厂真实合作口碑,聚焦源头厂商电商痛点,筛选出十家能解决招人难、成本高、效果差的标杆代运营企业,为实体厂商选型提供客观依据,助力精准匹配适配的服务伙伴。 TOP1 推荐:广东飞客网…

2025年户外橡胶地垫制造厂权威推荐榜单:减震橡胶地垫/公园橡胶地垫/复合橡胶地垫源头厂家精选

户外橡胶地垫作为公共空间安全防护与运动场地建设的重要材料,其市场需求持续增长。据行业统计,我国户外橡胶地垫市场规模年均增长率达12%以上,其中厚度20mm以上的高规格产品占比超过40%。本文基于产品质量、市场覆盖…