若依-excel预览功能实现

news2024/11/15 15:38:55

实现效果及源码

实现效果如下图所示:
在这里插入图片描述实现思路:
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:[],
在这里插入图片描述
保存之后,即可加载成功!
本文参考:https://blog.csdn.net/qq_27250279/article/details/126156199

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

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

相关文章

C++基础——C++ 字符串

C基础——C 字符串C 字符串C 风格字符串C 中的 String 类C 字符串 C 提供了以下两种类型的字符串表示形式&#xff1a; C 风格字符串C 引入的 string 类类型 C 风格字符串 C 风格的字符串起源于 C 语言&#xff0c;并在 C 中继续得到支持。字符串实际上是使用 null 字符 ‘…

126、【回溯算法】leetcode ——332. 重新安排行程:回溯算法(C++版本)

题目描述 原题链接&#xff1a;332. 重新安排行程 解题思路 本题要解决的问题&#xff1a; 需要构建起始与目的机场的映射关系&#xff1b;每次选择目的机场时&#xff0c;需要选择当前最小字母顺序的机场&#xff1b;从“JFK”之后依次飞往&#xff0c;并且可能会有多条路径…

58同城AI Lab在WeNet中开源Efficient Conformer模型

2022年8月&#xff0c;58同城TEG-AI Lab语音技术团队完成了WeNet端到端语音识别的大规模落地&#xff0c;替换了此前基于Kaldi的系统&#xff0c;并针对业务需求对识别效果和推理速度展开优化&#xff0c;取得了优异的效果&#xff0c;当前录音文件识别引擎处理语音时长达1000万…

非标设备ERP管理系统可以帮助企业解决哪些管理难题?

多品种、小批量、交货周期短、非标准化生产是大多数非标设备制造企业共同的特性&#xff0c;这就要求非标设备制造企业应具备足够的经营、技术、生产和管理力量&#xff0c;否则就会顾此失彼&#xff0c;产品质量难以得到保证。非标设备制造企业常见的管理难题&#xff08;1&am…

DynaSLAM-2 DynaSLAM中Mask R-CNN部分源码解析(Ⅰ)

目录 1.Mask R-CNN源码地址 2.Mask R-CNN效果 3.项目配置 4.源码使用 1.Mask R-CNN源码地址 Mask R-CNN源码地址https://github.com/matterport/Mask_RCNN/releases 这里我们拿Mask R-CNN2.1版本进行讲解。 2.Mask R-CNN效果 最传统最核心的功能就是物体检测了…

4款让人心疼的电脑软件,由于免费又实用,常被同行挤压

许多小众软件&#xff0c;免费、实用、体验好、无广告&#xff0c;出淤泥而不染&#xff0c;却因过于良心备受排挤&#xff0c;让人唏嘘。 1、oCam 市面上的视频录屏工具&#xff0c;要么限制时长&#xff0c;要么附上水印&#xff0c;需要使用完整功能必须付费&#xff0c;oca…

Java项目调用C++端的订阅功能,获得推送数据(从设计到代码全栈完整过程)

前言 有关java和C的交互的基本概念和知识&#xff0c;本文不再详述。有需要的可以参考我的这篇文章。 JNI、DLL、SO等相关概念 开发背景 C项目端开发了一套股票市场资讯推送的功能&#xff0c;多个小组都会用到该功能&#xff0c;为了避免重复开发&#xff0c;中台小组要负担…

SpringBoot项目集成logback日志分等级配置

背景&#xff1a; 日志的作用&#xff1a; boot项目集成logback&#xff1a; 一、单模块项目配置&#xff1a; 1、添加依赖 2、添加logback-spring.xml配置文件到resources目录下 3、接下来启动一下项目&#xff0c;就可以看到我们的日志已经区分等级打印了 二、多微服务…

DVWA之SQL注入

Low(数字型注入)1、先确定正常和不正常的回显回显&#xff0c;就是显示正在执行的批处理命令及执行的结果等。输入1时&#xff0c;有回显&#xff0c;是正常的 数据库语句&#xff1a; select * from table where id 1输入5时&#xff0c;有回显&#xff0c;是正常的 数据库语句…

Metasploit工具使用(下)

Metasploit工具使用1.Metasploit简介1.1.Metasploit下载1.2.其它参考1.3.本章简述2.Meterpreter2.1.简介2.2.优点2.3.注意事项2.4.整体攻击流程2.4.1.创建后门2.4.2.监听后门2.4.3.运行后门2.4.4.成功获得3.渗透后命令汇总3.1.迁移进程3.1.1.查看当前进程3.1.2.获取当前进程PID…

你可能不知道的JS使用技巧

数组扁平化 老方案 let arr [1, 2, 4, 6,[5, 4, 5,[98, 3], [34], [7]]]; arr.toString().split(,).map(Number);新方案&#xff1a; flat() const arr [1, [2, [3, [4, 5]]], 6]; console.log(arr.flat(Infinity));深拷贝 老方案&#xff1a; JSON.parse(JSON.stringify(…

数据分析:Matplotlib数据可视化详细教程

1.主要分为4种&#xff1a;柱状图&#xff0c;直方图&#xff0c;散点图&#xff0c;饼状图 可视化的工具选择&#xff1a;可视化的Python软件包 工具的优点&#xff1a;可以自制图形定义功能 绘图程序步骤&#xff1a; 第一步导包中Pyplot模块&#xff0c;以as为别名引入包…

蓝桥杯重点(C/C++)(随时更新,更新时间:2023.1.31)

点关注不迷路&#xff0c;欢迎推荐给更多人&#xff0c;大约两天更新一次&#xff0c;建议点赞收藏加关注 本次更新内容&#xff1a;2.18 递归 目录 1 技巧 1.1 取消同步&#xff08;节约时间&#xff0c;甚至能多骗点分&#xff0c;最好每个程序都写上&#xff09; 1.…

代谢组学文献解读:高胆固醇饮食与脂肪肝相关肝癌的关系

代谢组学文献分享&#xff0c;非酒精性脂肪性肝病&#xff08;Non-alcoholic fatty liver disease , NAFLD)是全世界日趋普遍的慢性肝病。随着肥胖和代谢综合征在全球的流行&#xff0c;近20年亚洲国家NAFLD增长迅速&#xff0c;在上海、北京、广州和香港等地区成人NAFLD患病率…

【论文简述】Multiview Stereo with Cascaded Epipolar RAFT(arxiv 2022)

一、论文简述 1. 第一作者&#xff1a;Zeyu Ma 2. 发表年份&#xff1a;2022 3. 发表期刊&#xff1a;arxiv 4. 关键词&#xff1a;MVS、RAFT、级联、极线 5. 探索动机&#xff1a;3D卷积在计算和内存方面成本很高&#xff0c;在有限资源条件下限制重建质量。 However, a …

CISP-PTE 学习记录

CISP-PTE 学习记录 题目链接1 http://49.232.193.10:2083/start/index.php?pagehello.html write up: http://49.232.193.10:2083/start/index.php?pagephp://filter/readconvert.base64-encode/resource…/key.php 知识点: php伪协议&#xff0c;php伪协议是可以读取到ww…

【运维】Linux/Ec2挂载卷与NFS搭建实站讲解

英文Network File System(NFS)&#xff0c;是由SUN公司研制的UNIX表示层协议(presentation layer protocol)&#xff0c;能使使用者访问网络上别处的文件就像在使用自己的计算机一样。NFS在实际场景中有着不少的应用场景&#xff0c;比如分布式代码部署下&#xff0c;代码一致性…

关于 微软商店无法加载页面 显示错误代码0x80131500的解决办法

目录一、误删系统文件导致Microsoft Store无法打开1.运行 SFC 和 DISM2.尝试修复或者重置微软应用商店3.重新部署 Microsoft Store4.运行Windows疑难解答5.对系统镜像进行无损修复二、其他原因导致Microsoft Store无法打开1.调整网络连接2.更改DNS3.清理应用商店的缓存4.调整 I…

java-raft框架之atomix进行分布式管理

共识算法 在一个分布式的系统中&#xff0c;管理各个节点的一致性&#xff08;共识&#xff09;一直是个很有难度的问题。 在近几十年的发展中&#xff0c;于1990年诞生的Paxos算法是其中最为经典的代表&#xff0c;并一统江湖数几十载。 如著名的zookeeper、chubby都是基于…

操作系统(day03)-- 进程

文章目录进程进程的定义进程的组成进程的组织进程的特征进程的状态-五种基本状态进程状态的转换进程控制进程控制的定义进程控制相关的原语进程 系统并发运行多个程序&#xff0c;它需要将程序代码、数据段存放到内存的某个位置&#xff0c;那系统怎么知道哪个内存的数据在哪呢…