若依配置教程(七)Excel预览功能实现

news2024/12/23 5:08:38

实现效果及源码

实现效果如下图所示:
在这里插入图片描述实现思路:
1.动态表格:定义表头数组,表格遍历表头生成表格列
2.读取excel文件内容,封装表头,绑定表格数据

代码修改

首先参考若依官网,先实现excel导入功能,然后在源码的基础上进行修改。
网址:http://doc.ruoyi.vip/ruoyi-vue/document/htsc.html#%E5%AF%BC%E5%87%BA%E5%AE%9E%E7%8E%B0%E6%B5%81%E7%A8%8B
如图所示:
在这里插入图片描述
在有了导入功能的基础上,我们开始对代码进行修改:

一、替换第三段代码,上传组件

在这里插入图片描述
将这段代码注销,然后这个位置下面加入代码:

<el-dialog :title="upload.title" :visible.sync="upload.open" width="800px" append-to-body>
      <el-upload
        name="file"
        ref="upload"
        :limit="1"
        :file-list="fileList"
        accept=".xlsx, .xls"
        :headers="upload.headers"
        :action="upload.url + '?updateSupport=' + upload.updateSupport"
        :disabled="upload.isUploading"
        :on-progress="handleFileUploadProgress"
        :on-success="handleFileSuccess"
        :on-change="handleChange"
        :auto-upload="false"
        :show-file-list="false"
      >
        <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
        <div slot="tip" class="el-upload__tip">
          仅允许导入xls、xlsx格式文件。
          <el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline" @click="importTemplate">下载模板</el-link>
        </div>
      </el-upload>

      <el-row class="mb8"><h4>预览</h4> </el-row>
      <el-table :data="tableData" border>
        <el-table-column
          v-for="(items, index) in tableCol"
          :prop="items.colProp"
          :label="items.colLable"
          width="180"
          :key="index"
          :show-overflow-tooltip="true"
        >
        </el-table-column>
      </el-table>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submitFileForm">确 定</el-button>
        <el-button @click="upload.open = false">取 消</el-button>
      </div>

    </el-dialog>

动态表格(上面那段代码已包含,这是预览功能实现的关键代码):

 <el-table :data="tableData" border>
        <el-table-column
          v-for="items in tableCol"
          :prop="items.colProp"
          :label="items.colLable"
          width="180"
          :key="items.colLable"
          :show-overflow-tooltip="true"
        >
        </el-table-column>
      </el-table>

二、读取excel文件方法


 //选取文件
    async handleChange(file, fileList) {
      this.loading = true
      let _this = this
      let reader = new FileReader()
      reader.onload = function (e) {
        let data = e.target.result
        this.wb = XLSX.read(data, {
          type: 'binary',
          cellDates: true,
        })
        console.log(this.wb.Sheets[this.wb.SheetNames[0]])
        /**
         * wb.SheetNames[0]是获取Sheets中第一个Sheet的名字
         * wb.Sheets[Sheet名]获取第一个Sheet的数据
         */
        let excelJson = XLSX.utils.sheet_to_json(this.wb.Sheets[this.wb.SheetNames[0]], {
          defval: null,
          raw: false
        })
        console.log(excelJson)
        //表头
        for (var item in excelJson[0]) {
          _this.tableCol.push({
            colProp: item,
            colLable: item,
          })
        }
        excelJson.forEach((element) => {
          element['日期'] = formatDate(element['日期'])
          element['预计开始时间'] = formatDate(element['预计开始时间'])
          element['预计结束时间'] = formatDate(element['预计结束时间'])
          element['实际开始时间'] = formatDate(element['实际开始时间'])
          element['实际结束时间'] = formatDate(element['实际结束时间'])
        })
        _this.tableData = excelJson
        _this.loading = false
      }
      reader.readAsBinaryString(file.raw)
    },

将这段代码加入到文件夹最后即可

三、在data()中定义数组

在下图所示的代码中,新加入这三个数组:
fileList:[],
tableData:[],
tableCol:[],
在这里插入图片描述

四、在index.vue的< script >中引入

import {formatDate} from "@/utils";
import * as XLSX from "xlsx";

在这里插入图片描述

保存之后,即可加载成功!
本文参考:https://blog.csdn.net/qq_27250279/article/details/126156199

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/190416.html

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

相关文章

浅析综合型大厦视频监控平台建设的必要性和重点功能

一、方案背景随着现代科学技术的发展&#xff0c;监控系统已成为综合型大厦安全防范必不可少的一部分。为了保障整个大厦的安全管理&#xff0c;借助安防监控系统能够迅速而有效地全面管理、禁止或处理突发性事件。因此建设一套优良的监控系统对于大厦各方面的管理都显得尤为重…

从零开始配置vim(31)——git 配置

很抱歉又拖更了这么久了&#xff0c;在这个新公司我想快速度过试用期&#xff0c;所以大部分的精力主要花在日常工作上面。但是这个系列还是得更新下去&#xff0c;平时只能抽有限的业余时间来准备。这就导致我写这些文章就慢了一些。 废话不多说&#xff0c;咱们正式开始有关g…

【Leetcode】面试题 01.06. 字符串压缩、面试题 05.07. 配对交换

作者&#xff1a;一个喜欢猫咪的的程序员 专栏&#xff1a;《Leetcode》 喜欢的话&#xff1a;世间因为少年的挺身而出&#xff0c;而更加瑰丽。 ——《人民日报》 目录 面试题 01.06. 字符串压缩&#xff1a; 面试题 05.07. 配对交换 面试题…

【贪心数学困难题】1739. 放置盒子

⭐️前面的话⭐️ 本篇文章介绍【贪心数学困难题】1739. 放置盒子题解&#xff0c;展示语言java。 &#x1f4d2;博客主页&#xff1a;未见花闻的博客主页 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4cc;本文由未见花闻原创&am…

20份可视化大屏模板,直接套用真香(文末附源码)

最近有不少小伙伴问我&#xff1a;有没有数据可视化大屏模板&#xff0c;而且要B格很高的。 这不&#xff0c;立马安排。特地给大家准备了20张精美、炫酷而且十分实用的可视化大屏模板&#xff0c;涉及机械、加工、零售、银行、交通等行业。 只要你有数据就能够迅速套用到模板…

Spring-IOC/DI配置管理第三方bean

Spring-IOC/DI配置管理第三方bean 1&#xff0c;IOC/DI配置管理第三方bean 1.1 案例:数据源对象管理 本次案例将使用咱们前面提到过的数据源Druid(德鲁伊)和C3P0来配置学习下。 1.1.1 环境准备 学习之前&#xff0c;先来准备下案例环境: 创建一个Maven项目 pom.xml添加依…

代码随想录day52 动态规划

代码随想录day52 动态规划 题1143.最长公共子序列 1&#xff0c;本题和最长重复子数组的区别在于本题不要求连续&#xff0c;那么当遇到元素不相同时不能重头开始累计&#xff0c;而应该取前面情况中的最大值。 2&#xff0c;dp数组依然为dp[i][j]&#xff1a;长度为[0, i -…

提取页码去重再编号

实例需求&#xff1a;A列为档号数据&#xff0c;由多段数字组成&#xff0c;使用减号作为分隔符&#xff0c;最后一段数字代表页数&#xff0c;注意页数是不连续的&#xff0c;倒数第二段数字是代表档案中的第几本&#xff0c;每个档案都是从1开始。现在需要在B列创建“卷内顺序…

A股level2行情数据接口可以获取可转债数据吗?

可以的&#xff0c;究竟如何通过level2行情获取可转债数据&#xff1f; level2行情数据接口数据包括每只股票每3秒的快照数据&#xff0c;每10秒的快照数据毫秒级差别推送数据&#xff0c;收集多个逐笔成交数据和逐笔委托数据。 通过数据提供商获取即时收集数据和盘后数据。数…

七、请求和响应

请求和响应 web框架本质就是处理用户发起的请求&#xff0c;然后返回响应结果。请求&#xff0c;和响应就是框架中的数据流。 请求 当页面被请求时&#xff0c;django会创建一个HttpRequest对象&#xff0c;该对象包含关于请求的元数据。然后django加载适当的视图&#xff0…

[NOI Online 2021 入门组] 切蛋糕

题目描述: Alice、Bob 和 Cindy 三个好朋友得到了一个圆形蛋糕&#xff0c;他们打算分享这个蛋糕。 三个人的需求量分别为 a,b,c现在请你帮他们切蛋糕&#xff0c;规则如下&#xff1a; 每次切蛋糕可以选择蛋糕的任意一条直径&#xff0c;并沿这条直径切一刀&#xff08;注意…

【C++】模板进阶:非类型的模板参数与模板的特化

一、非类型模板参数 模板参数分类&#xff1a;类型形参与非类型形参。 类型形参&#xff1a;出现在模板参数列表中&#xff0c;跟在class或者typename之后的参数类型名称。 非类型形参&#xff0c;就是用一个常量作为类(函数)模板的一个参数&#xff0c;在类(函数)模板中可将…

GMP调度模型

GMP的发展: go 1.1版本之前时候过使用的是GM模型全局队列的模式。GM模型全局队列的模式M&#xff1a;1 内核线程&#xff1a;协程新建一个协程G的时候会放入全局队列中&#xff0c;每次执行一个协程G的时候&#xff0c;内核线程M会从全局队列中获取一个协程G执行,因为内核线程…

Dataset and DataLoader 加载数据集

文章目录7、Dataset and DataLoader 加载数据集7.1 Revision7.1.1 Manual data feed 手动数据输入7.1.2 Epoch, Batch-Size, Iterations7.2 DataLoader 数据加载器7.3 Dataset 数据集7.3.1 import7.3.2 class7.3.3 DataLoader7.4 Example: Diabetes Dataset7.4.1 Prepare datas…

【微服务】Seata的部署和集成

Seata的部署和集成一、部署Seata的tc-server1.下载2.解压3.修改配置4.在nacos添加配置5.创建数据库表6.启动TC服务二、微服务集成seata1.引入依赖2.修改配置文件三、TC服务的高可用和异地容灾1.模拟异地容灾的TC集群2.将事务组映射配置到nacos3.微服务读取nacos配置一、部署Sea…

【Redis】.net core 3.1 Redis安装和简单使用

Redis&#xff08;Remote Dictionary Server )&#xff0c;即远程字典服务&#xff0c;是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 简单来说&#xff0c;就是一个键值对数据库。 Redis支持的…

DynaSLAM-5 DynaSLAM中Mask R-CNN部分源码解析(Ⅳ)

目录 1.ROIAlign层 2.Mask分支 3.整体框架回顾 1.ROIAlign层 在上文中&#xff0c;我们现在手里已经有了正负样本数据以及它们对应的标签。接下来我们就要进行预测的操作了&#xff01; 但在预测之前&#xff0c;还有些小问题&#xff1a; ①每个ROI大小也不一样&#xff0c…

Biotin-SS-Sulfo-NHS;CAS:325143-98-4;生物素-二硫键-磺酸-活性酯

名称&#xff1a;生物素-二硫键-磺酸-活性酯 英文名称&#xff1a;Biotin-SS-Sulfo-NHS CAS:325143-98-4 分子式&#xff1a;C19H27N4NaO9S4 分子量&#xff1a;606.67 外观&#xff1a;白色固体或粘稠液体&#xff0c;取决于分子量大小 溶剂&#xff1a;溶于大部分有机溶…

JVM自动内存管理核心知识速览

目录运行时数据区程序计数器Java虚拟机栈本地方法栈Java堆方法区运行时常量池直接内存对象对象的创建类加载检查分配内存指针碰撞&#xff08;Bump The Pointer&#xff09;空闲列表&#xff08;Free List&#xff09;内存分配并发问题初始化值设置对象头执行init方法对象的内存…

一、Qt汽车仪表盘之绘制背景-绘制饼图

一、绘图坐标系分析 1、坐标系平移 1、从原来的坐标系中心移动到矩形仪表盘中心&#xff0c;相对应的坐标会发生变化。 2、了解绘制饼图的含义 &#xff08;1&#xff09;坐标系平移之后坐标变化 &#xff08;2&#xff09;绘制第一个饼图效果 第一个饼图&#xff1a;坐标…