前端输出Excel之保姆级教程

news/2024/7/21 4:33:38 标签: excel

首先安装

npm i xlsx file-saver -S
npm i xlsx

 引入:

import { saveAs } from "file-saver";

// import XLSX from "xlsx";

import * as XLSX from "xlsx";

import XLSXS from "xlsx-style";

 首先我引入 import XLSX from "xlsx";报错,解决方法则是import * as XLSX from "xlsx";另外这里我安装并引用了样式,并写了相应代码。但是样式并未生效。

此时写一个按钮,按钮有一个点击事件,执行一个方法,该方法则是输出表格。

<el-button class="my-new-button-style" type="white" @click="exportExcel" size="small">
        <i class="iconfont icon-icon-new-26 button-left-class"></i>
        <span class="text">导出Excel</span>
      </el-button>

 给表格外层div加上一个id选择器:

<div class="c-table" id="tablePrint">
      <el-table class="my-new-table" border :data="Rows" height="350"
        :header-cell-style="{ 'text-align': 'center' }">
        <el-table-column :label="item.Label" :prop="item.Prop" v-for="(item, index) in tableheadTop">
          <el-table-column :label="citem.Label" :prop="citem.Prop" :width="widthItem(item.Subs)"
            v-for="(citem, index) in item.Subs" align="center">
            <template slot-scope="scope">
              <div class="cellText" @click="() => { returnObj = scope.row[citem.Prop]; DoReverseQuery() }"> {{
                MapCount(scope.row[citem.Prop]) }}</div>
            </template>
          </el-table-column>
        </el-table-column>
      </el-table>
    </div>

点击输出excel执行的方法如下:

 exportExcel() {
      console.log('XLSXS',XLSXS);
      var xlsxParam = { raw: true }; // 只导出不解析
      var wb = XLSX.utils.table_to_book(
        document.querySelector("#tablePrint"),
        xlsxParam
      );
      // 获取工作簿中的第一个工作表
      var sheet = wb.Sheets[wb.SheetNames[0]];
      // var sheet = wb.Sheets[sheetName];

      // 获取工作表中数据范围
      var range = XLSX.utils.decode_range(sheet["!ref"]);
      console.log("range", range);

        //样式部分
      for (var R = range.s.r; R <= range.e.r; ++R) {
        for (var C = range.s.c; C <= range.e.c; ++C) {
          var cell_address = XLSXS.utils.encode_cell({ r: R, c: C });
          var cell = sheet[cell_address];
          if (cell) {
            var style = cell.s || {};
            style.font = { color: { rgb: "80ff00" } };
            // console.log('XLSX.utils',XLSX.utils);
            cell.s = style
            // XLSX.utils.sheet_add_cell(sheet, { t: "s", v: cell.v, s: style, address: cell_address });
          }
        }
      }

      var wbout = XLSX.write(wb, {
        bookType: "xlsx",
        bookSST: true,
        type: "array"
      });
      try {
        saveAs(
          new Blob([wbout], { type: "application/octet-stream" }),
          "干部年龄分布.xlsx"
        );
      } catch (e) {
        if (typeof console !== "undefined") console.log(e, wbout);
      }
      return wbout;
    },

若需要前端输出到excel只需要把代码的 document.querySelector("#tablePrint"),表名更换为自己的表名即可.欢迎大佬们留言赐教该代码的样式未生效的原因.


http://www.niftyadmin.cn/n/699192.html

相关文章

centos7安装zabbix v4

1.获取rpm包 wget -c https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm 2.安装 yum install zabbix-release-4.0-2.el7.noarch.rpm -y 3.关防火墙和selinux 4.下载数据库 yum install mariadb -y 5.启动数据库设置密码 …

低代码平台在ERP软件中的作用

很多人认为 低代码开发平台的出现颠覆了传统的软件开发模式&#xff0c;对软件开发行业造成冲击&#xff0c;其实低代码开发平台的出现只是提高了软件开发的效率&#xff0c;并不是要颠覆软件开发的模式。低代码平台在erp软件开发中的作用还是比较明显的。下面一起来了解一下相…

<List<Map<String,Object>>>Map中多个属性转成List Map

举例&#xff1a; 原始数据&#xff1a;{001张三, 002李四, 003王五, 004赵六} 目标数据&#xff1a; {value张三, key001} {value李四, key002} {value王五, key003} {value赵六, key004} package test02;import java.util.ArrayList; import java.util.HashMap; import jav…

【面试题26】计算机网络七层协议以及TCP和UDP

文章目录 一、前言二、七层协议模型三、 TCP四、 UDP总结 一、前言 本文已收录于PHP全栈系列专栏&#xff1a;PHP面试专区。 计划将全覆盖PHP开发领域所有的面试题&#xff0c;对标资深工程师/架构师序列&#xff0c;欢迎大家提前关注锁定。 计算机网络是我们日常生活中不可或缺…

1.6排序

1.6排序 1.6.1排序的基本概念 排序是根据某种标准将一组重排的过程&#xff0c;是最常见的计算任务之一。 1.6.2插入排序 插入排序&#xff08;Insertion Sort&#xff09;算法重复地将一个待排序的值插入到序列中已有序的子序列中&#xff0c;从而完成一组值的排序。每次将…

【Java项目】拉取公司GitLab项目的教程

文章目录 创建Git账号登录Git 创建Git账号 进入公司后&#xff0c;会拿到公司给你注册的邮箱以及密码&#xff0c;你得到用户名和密码之后&#xff0c;需要先创建一个拉取这个仓库对应的git账号。 我们先登录GitLab 当你登录GitLab之后&#xff0c;会显示你还没有ssh key&…

将英文版的Visual Studio 2019 切换为简体中文显示

一、需求说明 在使用Visual Studio 2019集成IDE环境下进行开发工作时;需要将IDE的环境修改为中文环境进行开发工作,中文界面对于不太熟悉Visual Studio 2019 环境的人来说是十分友好的。 二、需求分析 目前安装的Visual Studio 2019集成IDE环境是全英文的界面,需要切换为简…

Hyperledger Fabric架构设计

目录 1、逻辑架构 答疑&#xff1a;什么叫做背书策略&#xff1f; 2、运行时架构 答疑&#xff1a;什么是锚节点&#xff1f; 1、逻辑架构 Hyperledger Fabric从1.X开始&#xff0c;在扩展性及安全性方面有了很大的提升&#xff0c;且新增了诸多特性。 多通道&#xff1a;支…