Luckysheet类似excel的在线表格(vue)

参考文档:快速上手 | Luckysheet文档

一、引入

在vue项目的public文件夹下的index.html的<head>标签里面引入

html 复制代码
    <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/plugins/css/pluginsCss.css' />
    <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/plugins/plugins.css' />
    <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/css/luckysheet.css' />
    <link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/assets/iconfont/iconfont.css' />
    <script src="https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/plugins/js/plugin.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/luckysheet.umd.js"></script>

二、页面应用

2.1、视图中定义一个容器

html 复制代码
<template>
  <div>
    <div @click="DateShow">Excel在线编辑</div>
    <div
      id="luckysheetContainer"
      style="margin: 0px; padding: 0px; width: 60%; height: 80vh"
    ></div>
  </div>
</template>

2.2、初始化容器

javascript 复制代码
  mounted() {
    let dataS;
    dataS = [
      [
        {
          ct: {
            fa: "General",
            t: "g",
          },
          m: "节次",
          v: "节次",
          id: "111",
        },
        {
          ct: {
            fa: "General",
            t: "g",
          },
          m: " 开始时间",
          v: " 开始时间",
        },
        {
          ct: {
            fa: "General",
            t: "g",
          },
          m: " 结束时间",
          v: " 结束时间",
        },
        {
          ct: {
            fa: "General",
            t: "g",
          },
          m: "星期一",
          v: "星期一",
        },
        {
          ct: {
            fa: "General",
            t: "g",
          },
          m: "星期二",
          v: "星期二",
        },
        {
          ct: {
            fa: "General",
            t: "g",
          },
          m: "星期三",
          v: "星期三",
        },
        {
          ct: {
            fa: "General",
            t: "g",
          },
          m: "星期四",
          v: "星期四",
        },
      ],
      [
        {
          ct: {
            fa: "General",
            t: "g",
          },
          m: "1",
          v: "1",
        },
        {
          ct: {
            fa: "General",
            t: "g",
          },
          m: "12:00",
          v: "12:00",
        },
        {
          ct: {
            fa: "General",
            t: "g",
          },
          m: "14:00",
          v: "14:00",
        },
      ],
      [
        {
          ct: {
            fa: "General",
            t: "g",
          },
          m: "2",
          v: "2",
        },
        {
          ct: {
            fa: "General",
            t: "g",
          },
          m: "15:00",
          v: "15:00",
        },
        {
          ct: {
            fa: "General",
            t: "g",
          },
          m: "18:00",
          v: "18:00",
        },
      ],
    ];
    // 获取容器元素
    // const container = document.getElementById("luckysheetContainer");
    // console.log("container", container);
    // 将数据渲染到LuckySheet表格
    window.luckysheet.create({
      container: "luckysheetContainer", // DOM容器的ID
      title: "电子表格", // 工作簿名称
      lang: "zh", // 设定表格的语言
      // showtoolbarConfig: {
      //   print: false, // 工具栏隐藏打印按钮
      // },
      // showsheetbarConfig: {
      //   add: false, // 底部sheet页隐藏新增sheet按钮
      //   menu: false, // 底部sheet页隐藏管理按钮
      // },
      // sheetRightClickConfig: {
      //   hide: false, // 隐藏,取消隐藏
      //   move: false, // 向左移,向右移
      // },
    });
    this.sheetfile = window.luckysheet.getluckysheetfile();
    this.sheetfile[0].data = dataS;
    console.log(dataS, "this.sheetfile", this.sheetfile);
  },

可以自行编辑数据,也可以将数据渲染上去进行展示与二次编辑

2.3、效果展示

2.4、数据处理

javascript 复制代码
    DateShow() {
      this.sheetfile = window.luckysheet.getluckysheetfile();
      console.log("this.sheetfile", this.sheetfile);
const filteredArr = this.sheetfile[0].data.filter((row) =>
     row.some((cell) => cell !== null)
     );
     const filteredArr2 = filteredArr.map((row) =>
     row.filter((cell) => cell !== null)
      );
console.log("value", filteredArr2);
    },

上面的"filteredArr2"可以拿到表格中不为null的数据,后续其他功能可以在文档里查找。

相关推荐
默默学前端4 分钟前
ES6模板语法与字符串处理详解
前端·ecmascript·es6
lxh011313 分钟前
记忆函数 II 题解
前端·javascript
我不吃饼干20 分钟前
TypeScript 类型体操练习笔记(三)
前端·typescript
华仔啊23 分钟前
除了防抖和节流,还有哪些 JS 性能优化手段?
前端·javascript·vue.js
CHU72903531 分钟前
随时随地学新知——线上网课教学小程序前端功能详解
前端·小程序
清粥油条可乐炸鸡32 分钟前
motion入门教程
前端·css·react.js
这是个栗子36 分钟前
【Vue3项目】电商前台项目(四)
前端·vue.js·pinia·表单校验·面包屑导航
前端Hardy39 分钟前
Electrobun 正式登场:仅 12MB,JS 桌面开发迎来轻量化新方案!
前端·javascript·electron
树上有只程序猿40 分钟前
新世界的入场券,不再只发给程序员
前端·人工智能
confiself1 小时前
deer-flow前端分析
前端