Vue使用vxe-table实现Excel单元格数据填充功能

 更新时间:2026年06月04日 09:42:51   作者:daols88  
在数据编辑场景中,用户经常需要将某个单元格或区域的内容快速复制到下方单元格,vxe-table 提供了类 Excel 的填充功能,本文将通过完整示例,讲解如何通过 areaConfig.isFillByCopy 配置项启用该功能,需要的朋友可以参考下

在数据编辑场景中,用户经常需要将某个单元格或区域的内容快速复制到下方单元格。vxe-table 提供了类 Excel 的填充功能:选取区域后按下 Ctrl + D 键,即可将选中区域最上方单元格的值依次填充到下方单元格。

本文将通过完整示例,讲解如何通过 areaConfig.isFillByCopy 配置项启用该功能,并结合区域选取、编辑模式等打造高效的数据录入体验。

相关配置

配置路径值示例作用
mouseConfig.areatrue开启单元格区域选取功能(鼠标框选)
mouseConfig.extensiontrue开启区域扩展按钮(选中区域右下角的小方块,可拖拽扩大区域)
vareaConfig.multipletrue允许多个不连续区域选取(按住 Ctrl 多选)
areaConfig.isFillByCopytrue启用向下填充快捷键:Ctrl + D
keyboardConfig.isCliptrue开启剪贴板快捷键(复制 / 粘贴)
editConfig{ mode: ‘cell’, trigger: ‘dblclick’ }设为单元格编辑模式,双击进入编辑

最关键的一点:areaConfig.isFillByCopy 必须设置为 true,否则 Ctrl + D 将无效。

效果

代码

<template>
  <div>
    <vxe-grid v-bind="gridOptions"></vxe-grid>
  </div>
</template>
<script setup>
import { reactive } from 'vue'
const gEditRender = reactive({
  name: 'VxeSelect',
  props: {},
  options: [
    { label: 'Develop', value: '1' },
    { label: 'Test', value: '2' },
    { label: 'Designer', value: '3' },
    { label: 'PM', value: '4' }
  ]
})
const hEditRender = reactive({
  name: 'VxeSelect',
  props: {
    multiple: true
  },
  options: [
    { label: 'Develop', value: '1' },
    { label: 'Test', value: '2' },
    { label: 'Designer', value: '3' },
    { label: 'PM', value: '4' }
  ]
})
const gridOptions = reactive({
  border: true,
  height: 500,
  showOverflow: true,
  columnConfig: {
    resizable: true
  },
  editConfig: {
    mode: 'cell', // 单元格编辑模式
    trigger: 'dblclick' // 双击单元格激活编辑状态
  },
  mouseConfig: {
    area: true, // 是否开启区域选取
    extension: true // 是否开启区域扩展选取功能,开启后可以通过鼠标左键按住区域内右下角扩展按钮,将区域横向或纵向扩大
  },
  areaConfig: {
    multiple: true, // 是否启用多区域选取功能
    isFillByCopy: true // 是否启用选中复制填充功能,自动把上面的单元格内容填到下面(按 ctrl + D 键触发)
  },
  keyboardConfig: {
    arrowCursorLock: true, // 方向键光标锁,开启后处于非聚焦式编辑状态,将支持在编辑状态中通过方向键切换单元格。(切换为聚焦编辑状态,可以按 F2 键或者鼠标左键点击输入框,就可以用方向键左右移动输入框的光标)
    isAll: true, // 是否启用快捷键全选
    isClip: true, // 是否开启复制粘贴
    isArrow: true, // 是否开启方向键功能
    isShift: true, // 是否开启同时按住方向键以活动区域为起始,向指定方向扩展单元格区域
    isTab: true, // 是否开启 Tab 键功能
    isEnter: true, // 是否开启回车键功能
    isEdit: true, // 是否开启任意键进入编辑(功能键除外)
    isDel: true, // 是否开启删除键功能
    isEsc: true, // 是否开启Esc键关闭编辑功能
    isFNR: true // 是否开启查找与替换
  },
  columns: [
    { type: 'seq', width: 60 },
    { field: 'a', title: 'A', editRender: { name: 'VxeInput' } },
    { field: 'b', title: 'B', editRender: { name: 'VxeInput' } },
    { field: 'c', title: 'C', editRender: { name: 'VxeInput' } },
    { field: 'd', title: 'D', editRender: { name: 'VxeInput' } },
    { field: 'e', title: 'E', editRender: { name: 'VxeInput' } },
    { field: 'f', title: 'F', editRender: { name: 'VxeInput' } },
    { field: 'g', title: 'G单选', editRender: gEditRender },
    { field: 'h', title: 'H多选', minWidth: 200, editRender: hEditRender }
  ],
  data: [
    { id: 10001, a: 'Test1', b: 'Develop', c: 'Man', d: '23', e: '28', f: '', g: '', h: [] },
    { id: 10002, a: 'Test2', b: 'Test', c: 'Women', d: '23', e: '22', f: '', g: '', h: [] },
    { id: 10003, a: 'Test3', b: 'PM', c: 'Man', d: '23', e: '32', f: '', g: '4', h: ['3', '4'] },
    { id: 10004, a: 'Test4', b: 'Designer', c: 'Women', d: '456', e: '24', f: '', g: '2', h: ['2', '3', '4'] },
    { id: 10005, a: 'Test5', b: 'Designer', c: 'Women', d: '23', e: '42', f: '', g: '1', h: ['1', '2'] },
    { id: 10006, a: 'Test6', b: 'Designer', c: 'Man', d: '23', e: '38', f: '', g: '3', h: [] },
    { id: 10007, a: 'Test7', b: 'Test', c: 'Women', d: '100', e: '24', f: '', g: '', h: [] },
    { id: 10008, a: 'Test8', b: 'PM', c: 'Man', d: '345', e: '34', f: '', g: '', h: [] },
    { id: 10009, a: 'Test9', b: 'Designer', c: 'Man', d: '67', e: '52', f: '', g: '', h: [] },
    { id: 10010, a: 'Test10', b: 'Test', c: 'Women', d: '23', e: '44', f: '', g: '', h: [] }
  ]
})
</script>

说明

  1. 选取区域
    • 鼠标左键按住并拖拽,可以框选一个矩形区域(连续单元格)。
    • 按住 Ctrl 键可以同时选中多个不连续的区域。
  2. 向下填充(Ctrl + D)
    • 选中一个多行区域(例如 A2:C5),按下 Ctrl + D。
    • 系统会将选中区域最上方那一行的值,复制到该区域下方的每一行中。
    • 如果选中的区域只有一列,则会把顶部单元格的值向下填充至该列剩余行。
  3. 支持编辑器类型
    • 普通输入框(VxeInput)→ 值直接复制。
    • 单选下拉(VxeSelect)→ 选中的值(value)被复制。
    • 多选下拉(multiple: true)→ 数组形式的选中值被完整复制。
  4. 区域扩展按钮
    • 当选中一个区域后,右下角会出现一个小方块,鼠标按住并拖拽可以横向或纵向扩展选区,扩展后区域内单元格内容会自动填充(类似 Excel 的填充柄)。

以上就是Vue使用vxe-table实现Excel单元格数据填充功能的详细内容,更多关于Vue vxe-table Excel单元格数据填充的资料请关注脚本之家其它相关文章!

相关文章

  • vue easytable组件使用详解

    vue easytable组件使用详解

    Vue Easytable是一个基于Vue.js的数据表格组件库,它提供丰富的功能和灵活的配置,帮助开发者快速搭建复杂的数据表格界面,这篇文章主要介绍了vue easytable组件使用,需要的朋友可以参考下
    2023-09-09
  • Vue新玩具VueUse的具体用法

    Vue新玩具VueUse的具体用法

    VueUse 是一个基于 Composition API 的实用函数集合。本文就详细的介绍了VueUse的具体用法,具有一定的参考价值,感兴趣的可以了解一下
    2021-11-11
  • daisyUI解决TailwindCSS堆砌class问题详解

    daisyUI解决TailwindCSS堆砌class问题详解

    这篇文章主要为大家介绍了daisyUI解决TailwindCSS堆砌class问题详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • Vue2 Watch监听操作方法

    Vue2 Watch监听操作方法

    这篇文章主要介绍了Vue2 Watch监听,通过watch监听器,我们可以实时监控数据的变化,并且在数据发生改变时进行相应的操作,需要的朋友可以参考下
    2023-12-12
  • vue+element-ui+ajax实现一个表格的实例

    vue+element-ui+ajax实现一个表格的实例

    下面小编就为大家分享一篇vue+element-ui+ajax实现一个表格的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • 实现vue图片缩放方式-拖拽组件

    实现vue图片缩放方式-拖拽组件

    这篇文章主要介绍了实现vue图片缩放方式-拖拽组件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • Vue 监视属性之天气案例实现

    Vue 监视属性之天气案例实现

    这篇文章主要介绍了Vue 监视属性之天气案例实现,文章以天气为例展开介绍Vue 监视属性 的相关内容,需要的小伙伴可以参考一下
    2022-05-05
  • Vue报错:TypeError: Cannot create property ‘xxxx‘ on的解决

    Vue报错:TypeError: Cannot create property ‘xxxx‘ on的解决

    这篇文章主要介绍了Vue报错:TypeError: Cannot create property ‘xxxx‘ on的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • vue实现手机号码的校验实例代码(防抖函数的应用场景)

    vue实现手机号码的校验实例代码(防抖函数的应用场景)

    这篇文章主要给大家介绍了关于vue实现手机号码的校验的相关资料,主要是防抖函数的应用场景,文中通过示例代码介绍的非常详细,对大家学习或者使用vue具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • 手把手带你封装一个vue component第三方库

    手把手带你封装一个vue component第三方库

    这篇文章主要介绍了手把手带你封装一个vue component第三方库,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02

最新评论