VUE导出多级表头Excel

本文介绍了如何在Vue项目中实现多级表头Excel的导出。首先,安装了vue.js、javascript和前端相关依赖。接着,创建了一个公共导出方法,包括引入Blob.js和Export2Excel.js文件,并在main.js中配置。最后,展示了具体的导出代码及成功导出的截图。
摘要由CSDN通过智能技术生成

一、安装相关依赖

主要应用的插件是xlsxfile-saverscript-loader,还有表格样式优化插件xlsx-style

npm install xlsx --save
npm install file-saver --save
npm install script-loader --save
npm install xlsx-style --save

二、创建公共导出方法

在src目录下创建excel文件夹,excel文件夹中放入Blob.jsExport2Excel.js

1、Blob.js
/* eslint-disable */
(function (view) {
   
    "use strict";

    view.URL = view.URL || view.webkitURL;

    if (view.Blob && view.URL) {
   
        try {
   
            new Blob;
            return;
        } catch (e) {
   }
    }

    // Internally we use a BlobBuilder implementation to base Blob off of
    // in order to support older browsers that only have BlobBuilder
    var BlobBuilder = view.BlobBuilder || view.WebKitBlobBuilder || view.MozBlobBuilder || (function(view) {
   
            var
                get_class = function(object) {
   
                    return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]$/)[1];
                }
                , FakeBlobBuilder = function BlobBuilder() {
   
                    this.data = [];
                }
                , FakeBlob = function Blob(data, type, encoding) {
   
                    this.data = data;
                    this.size = data.length;
                    this.type = type;
                    this.encoding = encoding;
                }
                , FBB_proto = FakeBlobBuilder.prototype
                , FB_proto = FakeBlob.prototype
                , FileReaderSync = view.FileReaderSync
                , FileException = function(type) {
   
                    this.code = this[this.name = type];
                }
                , file_ex_codes = (
                    "NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR "
                    + "NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR"
                ).split(" ")
                , file_ex_code = file_ex_codes.length
                , real_URL = view.URL || view.webkitURL || view
                , real_create_object_URL = real_URL.createObjectURL
                , real_revoke_object_URL = real_URL.revokeObjectURL
                , URL = real_URL
                , btoa = view.btoa
                , atob = view.atob

                , ArrayBuffer = view.ArrayBuffer
                , Uint8Array = view.Uint8Array
                ;
            FakeBlob.fake = FB_proto.fake = true;
            while (file_ex_code--) {
   
                FileException.prototype[file_ex_codes[file_ex_code]] = file_ex_code + 1;
            }
            if (!real_URL.createObjectURL) {
   
                URL = view.URL = {
   };
            }
            URL.createObjectURL = function(blob) {
   
                var
                    type = blob.type
                    , data_URI_header
                    ;
                if (type === null) {
   
                    type = "application/octet-stream";
                }
                if (blob instanceof FakeBlob) {
   
                    data_URI_header = "data:" + type;
                    if (blob.encoding === "base64") {
   
                        return data_URI_header + ";base64," + blob.data;
                    } else if (blob.encoding === "URI") {
   
                        return data_URI_header + "," + decodeURIComponent(blob.data);
                    } if (btoa) {
   
                        return data_URI_header + ";base64," + btoa(blob.data);
                    } else {
   
                        return data_URI_header + "," + encodeURIComponent(blob.data);
                    }
                } else if (real_create_object_URL) {
   
                    return real_create_object_URL.call(real_URL, blob
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Vue项目中前端导出具有多级表头的表格为Excel文件,你可以使用`xlsx`库结合一些操作来实现。下面是一个示例代码: 首先,确保已经安装了`xlsx`库。在项目的根目录下运行以下命令: ``` npm install xlsx ``` 然后,在需要导出Excel文件的组件中,可以按照以下方式编写代码: ```vue <template> <div> <button @click="exportExcel">导出Excel</button> </div> </template> <script> import XLSX from 'xlsx'; export default { methods: { exportExcel() { const headers = [ { text: '姓名', rowspan: 2 }, { text: '信息', colspan: 2 }, { text: '科目', rowspan: 2 }, { text: '成绩', colspan: 3 } ]; const data = [ ['张三', '学生', '数学', '语文', '英语'], [null, null, 90, 80, 85] ]; const mergeCells = [ { s: { r: 0, c: 1 }, e: { r: 0, c: 2 } }, { s: { r: 0, c: 3 }, e: { r: 0, c: 5 } } ]; const ws = XLSX.utils.aoa_to_sheet([headers, ...data]); ws['!merges'] = mergeCells; const wb = XLSX.utils.book_new(); XLSX.utils.book_append_sheet(wb, ws, 'Sheet1'); XLSX.writeFile(wb, 'data.xlsx'); } } } </script> ``` 在上述代码中,我们定义了要导出的表格的表头`headers`和数据`data`,以及合并单元格的信息`mergeCells`。在`exportExcel`方法中,我们首先将表头和数据合并为一个二维数组,然后使用`XLSX.utils.aoa_to_sheet`方法将其转换为工作表对象`ws`。接着,我们设置合并单元格的信息,并将其赋值给工作表对象的`!merges`属性。最后,创建工作簿对象`wb`,将工作表对象添加到工作簿中,并使用`XLSX.writeFile`方法将工作簿保存为Excel文件。 在用户点击"导出Excel"按钮时,将触发`exportExcel`方法,从而导出具有多级表头的表格为Excel文件。 请注意,这种方式只能在现代浏览器中使用,并且导出Excel文件将保存在用户的本地文件系统中。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值