前端vue2中的excel导出功能-file-saver,xlsx,xlsx-style的使用

文章目录

    • 概要
    • 整体架构流程
    • 技术名词解释
    • 技术细节
    • 小结

概要

今天遇到了一个技术点.前端的excel的纯导出功能,不和后端交互,只用前端导出数据

整体架构流程

vue2 + element-ui 

技术名词解释

在网上看了很多帖子,最后我选择了xlsx , file-saver , xlsx-style 这个三个插件完成项目需求

技术细节

第一步: 下载插件 

npm i xlsx  xlsx-style  file-saver 

 第二步:  因为很多地方要用到excel导出,属性就封装一个js文件

      在src目录下新建 utils文件夹,然后再新建一个download.js

import FileSaver from "file-saver";
import XLSX from "xlsx";
import XLSXSTYLE from "xlsx-style"function outputXLSX(filename, tableDataId, rowValue, column, width) {let table = document.getElementById(tableDataId);let clonedTable = table.cloneNode(true);if (clonedTable.querySelector(".el-table__fixed")) {clonedTable.removeChild(clonedTable.querySelector(".el-tanle__fixed"));}let headerRows = clonedTable.querySelectorAll(".el-table__header-wrapper > table > thead > tr");Array.from(headerRows).forEach((headerRows) => {let columns = headerRows.querySelectorAll(".el-table__cell");Array.from(columns).forEach((column) => {if (column.classList.contains("gutter")) {column.remove();}});});let ws = XLSX.utils.table_to_sheet(clonedTable);let wb2 = XLSX.utils.book_new();XLSX.utils.book_append_sheet(wb2, ws, filename);setExlStyle(wb2["Sheets"][filename], width);let wb_out = XLSXSTYLE.write(wb2, { type: "buffer", bookSST: true });try {FileSaver.saveAs(new Blob([wb_out], { type: "application/octet-stream" }),filename + ".et");} catch (e) {console.log(e, wb_out);}return wb_out;
}function setExlStyle(data, px) {px = px ? px : 120;let borderAll = {top: { style: "thin" },bottom: { style: "thin" },left: { style: "thin" },right: { style: "thin" },};data["!cols"] = [];for (let key in data) {let col = "000000";if (data[key] instanceof Object) {if (data[key].v < 0) {col = "ff0000";} else {col = "000000";}data[key].s = {border: borderAll,alignment: {horizontal: "center",vertical: "center",},font: {color: {rgb: col,},sz: 11,},bold: true,numFmt: 0,};data["!cols"].push({wpx: px,});}}return data;
}export default {outputXLSX,
};

然后保存调用即可

bug解决-在使用这个东西的时候出现了2个bug

    第一个bug, 运行问题: * ./cptable in ./node_modules/xlsx-style/dist/cpexcel.js

     解决方案就是,在 项目的vue.config.js中编写一下代码:

module.exports = {

    configureWebpack: {

        externals: { './cptable': 'var cptable' }

    }

}

    第二个bug, 运行问题: the method has been removed in JSZip 3.0,please check the upgrade guide

     解决方案: 这个问题是因为jszip这个插件版本过高, 全局搜索jszip

   

然后下载对应的版本就可以使用了

小结

其实不难,就是遇到问题要细心看英文翻译,然后找到问题即可完成效果

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探究 ChatGPT 的心脏--Transformer(基础知识第一篇)

Transformer 是 ChatGPT 的核心部分&#xff0c;如果将 AI 看做一辆高速运转的汽车&#xff0c;那么 Transformer 就是最重要的引擎。它是谷歌于 2017 年发表的《Attention is All You Need》中提出的 Sequence-to-sequence 的模型&#xff0c;诞生之后便一统江湖&#xff0c;在…

LeetCode617:合并二叉树

题目描述 给你两棵二叉树&#xff1a; root1 和 root2 。 想象一下&#xff0c;当你将其中一棵覆盖到另一棵之上时&#xff0c;两棵树上的一些节点将会重叠&#xff08;而另一些不会&#xff09;。你需要将这两棵树合并成一棵新二叉树。合并的规则是&#xff1a;如果两个节点重…

【管理咨询宝藏65】翰威特顶级咨询公司战略解码内部培训

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏65】某顶级咨询公司战略解码内部培训 【格式】PDF 【关键词】战略解码、任务拆解、战略落地 【核心观点】 - 战略解码是“化战略为行动”的有效…

Golang | Leetcode Golang题解之第21题合并两个有序链表

题目&#xff1a; 题解&#xff1a; func mergeTwoLists(list1, list2 *ListNode) *ListNode {if list1 nil {return list2 // 注&#xff1a;如果都为空则返回空}if list2 nil {return list1}if list1.Val < list2.Val {list1.Next mergeTwoLists(list1.Next, list2)re…

DB schema表中使用全局变量及在DB组件中查询

DB schema表中使用全局变量及在DB组件中查询 规则如下&#xff1a; 使用如下&#xff1a; 如果在unicloud-db组件上不加判断条件&#xff0c;就会报错&#xff0c;并进入到登录页。 那么就会进入到登录页&#xff0c;加上了判断条件&#xff0c;有数据了就不会了。 因为在sc…

Netty学习——实战篇1 BIO、NIO入门demo 备注

1 BIO 实战代码 Slf4j public class BIOServer {public static void main(String[] args) throws IOException {//1 创建线程池ExecutorService threadPool Executors.newCachedThreadPool();//2 创建ServerSocketServerSocket serverSocket new ServerSocket(8000);log.in…

【springCloud】版本学习

Spring Cloud介绍 官网地址&#xff1a;https://spring.io/projects/spring-cloud Spring Cloud 是一个基于 Spring Boot 的微服务架构解决方案&#xff0c;它提供了一系列工具和模式来帮助开发者构建分布式系统。Spring Cloud 的组件和模式包括配置管理、服务发现、断路器、…

瀑布流布局

瀑布流布局&#xff1a;瀑布流&#xff0c;又称瀑布流式布局&#xff0c;是比较流行的一种页面布局&#xff0c;视觉表现为参差不齐的多栏布局。 问题概述: 一次性生成&#xff0c;不需要再次增加&#xff0c;排序顺序由上倒下&#xff0c;由左到右 解决方案&#xff1a; //…

谷歌AI新玩意:一场名为Gemini Code Assist的编程辅助革命

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Springboot+vue的粮仓管理系统的设计与实现(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的粮仓管理系统的设计与实现&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&am…

【Qt编译】ARM环境 Qt5.14.2-QtWebEngine库编译 (完整版)

ARM 编译Qt5.14.2源码 1.下载源码 下载Qt5.14.2源代码&#xff08;可根据自己的需求下载不同版本&#xff09; 下载网站&#xff1a;https://download.qt.io/new_archive/qt/5.14/5.14.2/single/ 2.相关依赖(如果需要的话) 先参考官方文档的需求进行安装&#xff1a; 官方…

React-样式使用

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;React篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来React篇专栏内容:React-样式使用 目录 1、行内样式 2、使用className属性 3、css module模块化 4、styled-c…