使用vue-easytable实现仿excel表格,支持可编辑、添加删除行、虚拟表格等功能

这篇具有很好参考价值的文章主要介绍了使用vue-easytable实现仿excel表格,支持可编辑、添加删除行、虚拟表格等功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用npm安装vue-easytable

npm install --save vue-easytable

在 main.js 中写入以下内容:

// 引入样式
import "vue-easytable/libs/theme-default/index.css";
// 引入组件库
import VueEasytable from "vue-easytable";
Vue.use(VueEasytable);
// 引入中文文语言包
import { VeLocale } from "vue-easytable";
import zhCN from "vue-easytable/libs/locale/lang/zh-CN.js";
VeLocale.use(zhCN);

代码实现

<template>
  <div class="spreadsheet">
    <ve-table
      style="word-break: break-word"
      fixed-header
      :scroll-width="0"
      :max-height="500"
      border-y
      :columns="columns"
      :table-data="tableData"
      row-key-field-name="rowKey"
      :virtual-scroll-option="virtualScrollOption"
      :cell-autofill-option="cellAutofillOption"
      :edit-option="editOption"
      :contextmenu-body-option="contextmenuBodyOption"
      :contextmenu-header-option="contextmenuHeaderOption"
      :row-style-option="rowStyleOption"
      :column-width-resize-option="columnWidthResizeOption"
    />
  </div>
</template>

<script>
const COLUMN_KEYS = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];
export default {
  data() {
    return {
      startRowIndex: 0,
      // 是否开启列宽可变
      columnWidthResizeOption: {
        enable: true,
      },
      // 虚拟滚动配置
      virtualScrollOption: {
        enable: true,
        scrolling: this.scrolling,
      },
      // 单元格自动填充配置
      cellAutofillOption: {
        directionX: true,
        directionY: true,
      },
      // 单元格编辑配置
      editOption: {
        afterCellValueChange: ({ row, column, changeValue }) => {
          console.log(row, column, changeValue);
          console.log(this.tableData);
        },
      },
      // header 右键菜单配置
      contextmenuHeaderOption: {
        contextmenus: [
          {
            type: "CUT",
          },
          {
            type: "COPY",
          },
          {
            type: "EMPTY_COLUMN",
          },
        ],
      },
      // body 右键菜单配置
      contextmenuBodyOption: {
        contextmenus: [
          {
            type: "CUT",
          },
          {
            type: "COPY",
          },
          {
            type: "SEPARATOR",
          },
          {
            type: "INSERT_ROW_ABOVE",
          },
          {
            type: "INSERT_ROW_BELOW",
          },
          {
            type: "SEPARATOR",
          },
          {
            type: "REMOVE_ROW",
          },
          {
            type: "EMPTY_ROW",
          },
          {
            type: "EMPTY_CELL",
          },
        ],
      },
      // 行样式配置
      rowStyleOption: {
        clickHighlight: false,
        hoverHighlight: false,
      },
      tableData: [],
    };
  },
  computed: {
    columns() {
      let columns = [
        {
          field: "index",
          key: "index",
          operationColumn: true,
          title: "",
          width: 55,
          fixed: "left",
          renderBodyCell: this.renderRowIndex,
        },
      ];
      columns = columns.concat(
        COLUMN_KEYS.map((keyValue) => {
          return {
            title: keyValue,
            field: keyValue,
            key: keyValue,
            width: 90,
            edit: true,
          };
        })
      );
      return columns;
    },
  },
  methods: {
    renderRowIndex({ row, column, rowIndex }) {
      return <span>{rowIndex + this.startRowIndex + 1}</span>;
    },
    scrolling({
      startRowIndex,
      visibleStartIndex,
      visibleEndIndex,
      visibleAboveCount,
      visibleBelowCount,
    }) {
      this.startRowIndex = startRowIndex;
    },
    // 初始化表格
    initTableData() {
      let tableData = [];
      for (let i = 0; i < 5000; i++) {
        let dataItem = {
          rowKey: i,
        };
        COLUMN_KEYS.forEach((keyValue) => {
          dataItem[keyValue] = "";
        });
        if (i === 1 || i === 3) {
          dataItem["C"] = "YOU";
          dataItem["D"] = "CAN";
          dataItem["E"] = "TRY";
          dataItem["F"] = "ENTER";
          dataItem["G"] = "SOME";
          dataItem["H"] = "WORDS";
          dataItem["I"] = "!!!";
        }
        tableData.push(dataItem);
      }
      this.tableData = tableData;
    },
  },
  created() {
    this.initTableData();
  },
};
</script>
<style lang="scss">
.spreadsheet {
  padding: 0 10px;
  margin: 20px 0;
}
</style>

效果

使用vue-easytable实现仿excel表格,支持可编辑、添加删除行、虚拟表格等功能

 表格配置文章来源地址https://www.toymoban.com/news/detail-477480.html

参数 说明 类型 可选值 默认值
tableData 表格数据 Array - -
footerData 表格footer 汇总数据,数据结构和 tableData 一致 Array - -
columns 列配置,具体项见下表 columns 配置 Array - -
showHeader 是否展示表头 Boolean - true
fixedHeader 是否固定表头,默认启用。需要和 `maxHeight`结合使用 Boolean - true
fixedFooter 是否固定footer 汇总,默认启用。需要和 `maxHeight`结合使用 Boolean - true
scrollWidth 表格滚动区域的宽(开始出滚动条的宽度)。Number指定像素;String指定百分比 NumberString - -
maxHeight 表格的最大高度。Number指定像素;String指定百分比。用于“固定头”或“虚拟滚动”功能 NumberString - -
rowKeyFieldName 指定 row key 的字段名称。用于行展开、行单选、行多选、行点击高亮、虚拟滚动 String - -
borderAround 是否展示表格外边框 Boolean - true
borderX 是否展示列横向边框 Boolean - true
borderY 是否展示列纵向边框 Boolean - false
cellSpanOption 单元格合并配置,具体见下表 cellSpanOption 配置 Object - -
columnHiddenOption 列隐藏配置,具体见下表 columnHiddenOption 配置 Object - -
cellStyleOption 单元格样式配置,具体见下表 cellStyleOption 配置 Object - -
rowStyleOption 行样式配置,具体见下表 rowStyleOption 配置 Object - -
expandOption 行展开配置,具体见下表 expandOption 配置 Object - -
checkboxOption 行多选配置,具体见下表 checkboxOption 配置 Object - -
radioOption 行单选配置,具体见下表 radioOption 配置 Object - -
virtualScrollOption 虚拟滚动配置,建议需要一次性展示1000条以上使用。具体见下表 virtualScrollOption 配置。 Object - -
sortOption 排序配置,具体见下表 sortOption 配置 Object - -
cellSelectionOption 单元格选择配置,具体见下表 cellSelectionOption 配置 Object - -
editOption 单元格编辑配置,具体见下表 editOption 配置 Object - -
contextmenuHeaderOption 表格 header 右键菜单配置,具体见下表 contextmenuHeaderOption 配置 Object - -
contextmenuBodyOption 表格 body 右键菜单配置,具体见下表 contextmenuBodyOption 配置 Object - -
eventCustomOption 自定义事件配置,具体见下表 eventCustomOption 配置 Object - -
cellAutofillOption 单元格自动填充配置,具体见下表 cellAutofillOption 配置 Object - -
clipboardOption 单元格剪贴板配置,具体见下表 clipboardOption 配置 Object - -

到了这里,关于使用vue-easytable实现仿excel表格,支持可编辑、添加删除行、虚拟表格等功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue项目使用luckyexcel插件预览excel表格

    温馨提示 :需要用到luckysheet文件和luckyexcel插件,根据下面步骤一步一步操作会避免踩坑,比如我当时遇到了window.luckysheet is not defined控制台报红的问题。 (这也是上面提到的如果没有引入会报红window.luckysheet找不到的问题) public文件夹下的index.html里引入luckysheet的相关依赖

    2024年02月12日
    浏览(27)
  • 【vue导入导出Excel】vue简单实现导出和导入复杂表头excel表格功能【纯前端版本和配合后端版本】

    前言 这是一个常用的功能,就是导入和导出excel表格 但是时常会遇到一些复杂表头的表格导出和导入 比如我这个案例里面的三层表头的表格。 网上看了下发现了一个非常简单导出和导入方法 当然这个是纯前端的版本,会出现分页不好下载的情况。所以实际工作中,导出还是

    2024年02月11日
    浏览(46)
  • VUE+Elment-ui怎么实现将table表格数据导出到Excel文件?

    最近开发公司后台管理系统时,*运营提出了个需求就是将某表格数据实现一键导出功能,我一实习生我会啥啊,搜吧,好在找到了,捏哈哈,接下来就是实现的流程,方便理解,我见了个简单的页面供大家参考 1.template部分 2.script部分 1.当前页面 2.点击导出按钮 3.下载完成

    2024年02月05日
    浏览(33)
  • 使用EasyExcel实现Excel表格的导入导出

    Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。 easyexcel重

    2024年02月12日
    浏览(32)
  • 前端vue自定义table 表格 表格组件 Excel组件

    前端组件化开发与Excel组件设计 一、前端开发的复杂性与组件化的必要性 随着技术的发展,前端开发的复杂度越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。

    2024年02月09日
    浏览(41)
  • Vue前端表格导出Excel文件

    分享一个Vue前端导出Excel文件的方法。记录学习! 功能需求 :将表格的全部数据导出Excel格式的文件 前端 :Vue3+Element-Plus 这个导出方法全部为前端操作,后端只需要传入表格数据到前端即可(基础的多表查询,用的内连接) 2.1 核心方法 将这个导出方法单独封装出来,带一

    2023年04月24日
    浏览(76)
  • vue导出excel表格(详细教程)

    三、在代码中使用 四、数据 DetailsForm:需要导出的数据 title:表格标题 json_fields:里面的属性是excel表每一列的title,用多个词组组成的属性名(中间有空格的)要加双引号; 指定接口的json内某些数据下载,若不指定,默认导出全部数据中心全部字段 五、效果  六、一些常用参数

    2024年02月16日
    浏览(30)
  • 记录--Vue中如何导出excel表格

    注意,此插件对node有版本要求,安装失败检查一下报错是否由于node版本造成! 在template节点下使用download-excel标签即可 在data节点下定义数据 点击导出 如果需要在点击按钮前动态的获取数据,则需要使用fetch属性来指定一个参数。 注意,使用此参数时不能再绑定data参数 以导

    2024年02月05日
    浏览(30)
  • Luckysheet类似excel的在线表格(vue)

    参考文档:快速上手 | Luckysheet文档   在vue项目的public文件夹下的index.html的head标签里面引入 可以自行编辑数据,也可以将数据渲染上去进行展示与二次编辑 上面的“filteredArr2”可以拿到表格中不为null的数据,后续其他功能可以在文档里查找。

    2024年01月21日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包