精华内容
下载资源
问答
  • vue 导出excel表格

    2020-06-18 21:14:50
    vue 导出excel表格 安装依赖 1.npm install -S file-saver xlsx 2.npm install -D script-loader 添加js文件 下载所需的两个文件:Blob.js、Export2Excel.js 新建vendor,名称不一定非是vendor,建议但不非得将此...

    vue 导出excel表格

    安装依赖
    1.npm install -S file-saver xlsx
    2.npm install -D script-loader
    添加js文件
    下载所需的两个文件:Blob.js、Export2Excel.js
    新建vendor,名称不一定非是vendor,建议但不非得将此目录放在与单页面同级的目录。将上面两个js文件放在vendor目录中。
    Blob.js 代码如下:

    /* eslint-disable */
    /* Blob.js
     * A Blob implementation.
     * 2014-05-27
     *
     * By Eli Grey, http://eligrey.com
     * By Devin Samarin, https://github.com/eboyjr
     * License: X11/MIT
     *   See LICENSE.md
     */
    
    /*global self, unescape */
    /*jslint bitwise: true, regexp: true, confusion: true, es5: true, vars: true, white: true,
     plusplus: true */
    
    /*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */
    
    (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);
                    }
                };
                URL.revokeObjectURL = function(object_URL) {
                    if (object_URL.substring(0, 5) !== "data:" && real_revoke_object_URL) {
                        real_revoke_object_URL.call(real_URL, object_URL);
                    }
                };
                FBB_proto.append = function(data/*, endings*/) {
                    var bb = this.data;
                    // decode data to a binary string
                    if (Uint8Array && (data instanceof ArrayBuffer || data instanceof Uint8Array)) {
                        var
                            str = ""
                            , buf = new Uint8Array(data)
                            , i = 0
                            , buf_len = buf.length
                            ;
                        for (; i < buf_len; i++) {
                            str += String.fromCharCode(buf[i]);
                        }
                        bb.push(str);
                    } else if (get_class(data) === "Blob" || get_class(data) === "File") {
                        if (FileReaderSync) {
                            var fr = new FileReaderSync;
                            bb.push(fr.readAsBinaryString(data));
                        } else {
                            // async FileReader won't work as BlobBuilder is sync
                            throw new FileException("NOT_READABLE_ERR");
                        }
                    } else if (data instanceof FakeBlob) {
                        if (data.encoding === "base64" && atob) {
                            bb.push(atob(data.data));
                        } else if (data.encoding === "URI") {
                            bb.push(decodeURIComponent(data.data));
                        } else if (data.encoding === "raw") {
                            bb.push(data.data);
                        }
                    } else {
                        if (typeof data !== "string") {
                            data += ""; // convert unsupported types to strings
                        }
                        // decode UTF-16 to binary string
                        bb.push(unescape(encodeURIComponent(data)));
                    }
                };
                FBB_proto.getBlob = function(type) {
                    if (!arguments.length) {
                        type = null;
                    }
                    return new FakeBlob(this.data.join(""), type, "raw");
                };
                FBB_proto.toString = function() {
                    return "[object BlobBuilder]";
                };
                FB_proto.slice = function(start, end, type) {
                    var args = arguments.length;
                    if (args < 3) {
                        type = null;
                    }
                    return new FakeBlob(
                        this.data.slice(start, args > 1 ? end : this.data.length)
                        , type
                        , this.encoding
                    );
                };
                FB_proto.toString = function() {
                    return "[object Blob]";
                };
                FB_proto.close = function() {
                    this.size = this.data.length = 0;
                };
                return FakeBlobBuilder;
            }(view));
    
        view.Blob = function Blob(blobParts, options) {
            var type = options ? (options.type || "") : "";
            var builder = new BlobBuilder();
            if (blobParts) {
                for (var i = 0, len = blobParts.length; i < len; i++) {
                    builder.append(blobParts[i]);
                }
            }
            return builder.getBlob(type);
        };
    }(typeof self !== "undefined" && self || typeof window !== "undefined" && window || this.content || this));
    

    Export2Excel.js 代码如下:

    /* eslint-disable */
    import { saveAs } from 'file-saver'
    import XLSX from 'xlsx'
    
    function generateArray(table) {
      var out = [];
      var rows = table.querySelectorAll('tr');
      var ranges = [];
      for (var R = 0; R < rows.length; ++R) {
        var outRow = [];
        var row = rows[R];
        var columns = row.querySelectorAll('td');
        for (var C = 0; C < columns.length; ++C) {
          var cell = columns[C];
          var colspan = cell.getAttribute('colspan');
          var rowspan = cell.getAttribute('rowspan');
          var cellValue = cell.innerText;
          if (cellValue !== "" && cellValue == +cellValue) cellValue = +cellValue;
    
          //Skip ranges
          ranges.forEach(function (range) {
            if (R >= range.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) {
              for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null);
            }
          });
    
          //Handle Row Span
          if (rowspan || colspan) {
            rowspan = rowspan || 1;
            colspan = colspan || 1;
            ranges.push({
              s: {
                r: R,
                c: outRow.length
              },
              e: {
                r: R + rowspan - 1,
                c: outRow.length + colspan - 1
              }
            });
          };
    
          //Handle Value
          outRow.push(cellValue !== "" ? cellValue : null);
    
          //Handle Colspan
          if (colspan)
            for (var k = 0; k < colspan - 1; ++k) outRow.push(null);
        }
        out.push(outRow);
      }
      return [out, ranges];
    };
    
    function datenum(v, date1904) {
      if (date1904) v += 1462;
      var epoch = Date.parse(v);
      return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);
    }
    
    function sheet_from_array_of_arrays(data, opts) {
      var ws = {};
      var range = {
        s: {
          c: 10000000,
          r: 10000000
        },
        e: {
          c: 0,
          r: 0
        }
      };
      for (var R = 0; R != data.length; ++R) {
        for (var C = 0; C != data[R].length; ++C) {
          if (range.s.r > R) range.s.r = R;
          if (range.s.c > C) range.s.c = C;
          if (range.e.r < R) range.e.r = R;
          if (range.e.c < C) range.e.c = C;
          var cell = {
            v: data[R][C]
          };
          if (cell.v == null) continue;
          var cell_ref = XLSX.utils.encode_cell({
            c: C,
            r: R
          });
    
          if (typeof cell.v === 'number') cell.t = 'n';
          else if (typeof cell.v === 'boolean') cell.t = 'b';
          else if (cell.v instanceof Date) {
            cell.t = 'n';
            cell.z = XLSX.SSF._table[14];
            cell.v = datenum(cell.v);
          } else cell.t = 's';
    
          ws[cell_ref] = cell;
        }
      }
      if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range);
      return ws;
    }
    
    function Workbook() {
      if (!(this instanceof Workbook)) return new Workbook();
      this.SheetNames = [];
      this.Sheets = {};
    }
    
    function s2ab(s) {
      var buf = new ArrayBuffer(s.length);
      var view = new Uint8Array(buf);
      for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
      return buf;
    }
    
    export function export_table_to_excel(id) {
      var theTable = document.getElementById(id);
      var oo = generateArray(theTable);
      var ranges = oo[1];
    
      /* original data */
      var data = oo[0];
      var ws_name = "SheetJS";
    
      var wb = new Workbook(),
        ws = sheet_from_array_of_arrays(data);
    
      /* add ranges to worksheet */
      // ws['!cols'] = ['apple', 'banan'];
      ws['!merges'] = ranges;
    
      /* add worksheet to workbook */
      wb.SheetNames.push(ws_name);
      wb.Sheets[ws_name] = ws;
    
      var wbout = XLSX.write(wb, {
        bookType: 'xlsx',
        bookSST: false,
        type: 'binary'
      });
    
      saveAs(new Blob([s2ab(wbout)], {
        type: "application/octet-stream"
      }), "test.xlsx")
    }
    
    export function export_json_to_excel({
      multiHeader = [],
      header,
      data,
      filename,
      merges = [],
      autoWidth = true,
      bookType = 'xlsx'
    } = {}) {
      /* original data */
      filename = filename || 'excel-list'
      data = [...data]
      data.unshift(header);
    
      for (let i = multiHeader.length - 1; i > -1; i--) {
        data.unshift(multiHeader[i])
      }
    
      var ws_name = "SheetJS";
      var wb = new Workbook(),
        ws = sheet_from_array_of_arrays(data);
    
      if (merges.length > 0) {
        if (!ws['!merges']) ws['!merges'] = [];
        merges.forEach(item => {
          ws['!merges'].push(XLSX.utils.decode_range(item))
        })
      }
    
      if (autoWidth) {
        /*设置worksheet每列的最大宽度*/
        const colWidth = data.map(row => row.map(val => {
          /*先判断是否为null/undefined*/
          if (val == null) {
            return {
              'wch': 10
            };
          }
          /*再判断是否为中文*/
          else if (val.toString().charCodeAt(0) > 255) {
            return {
              'wch': val.toString().length * 2
            };
          } else {
            return {
              'wch': val.toString().length
            };
          }
        }))
        /*以第一行为初始值*/
        let result = colWidth[0];
        for (let i = 1; i < colWidth.length; i++) {
          for (let j = 0; j < colWidth[i].length; j++) {
            if (result[j]['wch'] < colWidth[i][j]['wch']) {
              result[j]['wch'] = colWidth[i][j]['wch'];
            }
          }
        }
        ws['!cols'] = result;
      }
    
      /* add worksheet to workbook */
      wb.SheetNames.push(ws_name);
      wb.Sheets[ws_name] = ws;
    
      var wbout = XLSX.write(wb, {
        bookType: bookType,
        bookSST: false,
        type: 'binary'
      });
      saveAs(new Blob([s2ab(wbout)], {
        type: "application/octet-stream"
      }), `${filename}.${bookType}`);
    }
    
    

    上面是两个JS代码 下面是正式部分
    点击导出按钮

    <Button @click="handleDownload" style="margin-left: 10px">导出</Button>
    
    handleDownload() {
            this.downloadLoading = true
                import('./vendor/Export2Excel').then(excel => {   //引入JS文件
                const tHeader = ['用户昵称','资金类型']  //表头名称
                const filterVal = ['userNickName','fundType']   //字段名称
                const list = this.educedata    //请求的数据
                const data = this.formatJson(filterVal,list)
                console.log(excel)
                excel.export_json_to_excel({
                    header:tHeader,
                    data,
                    filename:'导出列表名称',
                    autoWidth:this.autoWidth,  
                    bookType:this.bookType,  
                    autoWidth:true,
                    bookType:'xlsx',
                })
            })
        },
        // 导出
        formatJson(filterVal,jsonData) {
          return jsonData.map(v => filterVal.map(j => {
              return v[j]
          }))
        },
    **把表格里的状态值改为文字**
    educelist(){//导出数据的接口
            this.postRequest("/fundingDetails/getPcByList",this.searchForm).then(res => {
                console.log(res)
                this.loading = false;
                if (res.success) {
                    this.educedata = res.result
                    for(var i=0;i<this.educedata.length;i++){
                        console.log(this.educedata[i])
                        this.educedata[i].directionName = this.educedata[i].direction == 1 ? '支出' : '支入'
                        this.educedata[i].outTypeName = this.returnOutTypeName(this.educedata[i].outType)
                        this.educedata[i].fundTypeName=this.returnfundTypeName(this.educedata[i].fundType)
                        console.log(this.educedata[i])
                    }
                    console.log(this.educedata,'daochu')
                }
            });
        },
        returnfundTypeName:function(type){
            switch(type){
                case 1: 
                    return '支付宝'
                    break
                case 2: 
                    return '微信'
                    break
                case 3: 
                    return '渔票'
                    break
                case 4: 
                    return '渔币'
                    break
                case 5: 
                    return '渔泡'
                    break
            }
        },
        returnOutTypeName: function(type){
            switch(type){
                case 1: 
                    return '支付'
                    break
                case 2: 
                    return '充值'
                    break
                case 3: 
                    return '转账'
                    break
                case 4: 
                    return '赛事报名'
                    break
                case 5: 
                    return '消费奖励'
                    break
                case 6: 
                    return '提现'
                    break
                case 7: 
                    return '兑换'
                    break
                case 8: 
                    return '创建战队'
                    break
                case 9: 
                    return '升级奖励'
                    break
                case 10: 
                    return '充值奖励'
                    break
                case 11: 
                    return '实名认证奖励'
                    break
                case 12: 
                    return '邀请奖励'
                    break
            }
        },
    
    
    展开全文
  • vue导出excel表格

    2020-10-02 19:17:15
    导出excel表格 只需要更改document.querySelector(".table")中选择的table,看你想到导出哪一个表格 <template> <div> <!-- 导出按钮 --> <div class="toexcel"> <el-button @click=...

    下载依赖

    npm install --save xlsx file-saver
    

    并且记得引入两个文件

    import FileSaver from "file-saver";
    import XLSX from "xlsx";
    

    只需要更改document.querySelector(".table")中选择的table,看你想到导出哪一个表格

    <template>
        <div>
            <!-- 导出按钮 -->
            <div class="toexcel">
                <el-button  @click="exportExcel" type="primary" class="button" style="width:70px;position:absolute;top:0;right:30px">导出</el-button>
            </div>
            <el-table
                class="table"
                :data="tableData"
                border
                style="width: 100%">
                <el-table-column
                prop="date"
                label="日期"
                width="180">
                </el-table-column>
                <el-table-column
                prop="name"
                label="姓名"
                width="180">
                </el-table-column>
                <el-table-column
                prop="address"
                label="地址">
                </el-table-column>
            </el-table>
        </div>
    </template>
    <script>
    import FileSaver from "file-saver";
    import XLSX from "xlsx";
    export default {
      data() {
        return {
            tableData: [{
              date: '2016-05-02',
              name: '王小虎',
              address: '上海市普陀区金沙江路 1518 弄'
            }, {
              date: '2016-05-04',
              name: '王小虎',
              address: '上海市普陀区金沙江路 1517 弄'
            }, {
              date: '2016-05-01',
              name: '王小虎',
              address: '上海市普陀区金沙江路 1519 弄'
            }, {
              date: '2016-05-03',
              name: '王小虎',
              address: '上海市普陀区金沙江路 1516 弄'
            }]
        };
      },
      methods: {
        // 导出表格所用
        exportExcel() {
          // 设置当前日期
          let time = new Date();
          let year = time.getFullYear();
          let month = time.getMonth() + 1;
          let day = time.getDate();
          let name = year + "" + month + "" + day;
          // console.log(name)
          /* generate workbook object from table */
          //  .table要导出的是哪一个表格
          var wb = XLSX.utils.table_to_book(document.querySelector(".table"));
          /* get binary string as output */
          var wbout = XLSX.write(wb, {
            bookType: "xlsx",
            bookSST: true,
            type: "array"
          });
          try {
            //  name+'.xlsx'表示导出的excel表格名字
            FileSaver.saveAs(
              new Blob([wbout], { type: "application/octet-stream" }),
              name + ".xlsx"
            );
          } catch (e) {
            if (typeof console !== "undefined") console.log(e, wbout);
          }
          return wbout;
        }
      }
    };
    </script>
    <style scoped>
    /* 导出按钮 */
    .toexcel {
      cursor: pointer;
      cursor: hand;
      width: 70px;
      height: 34px;
    }
    </style>
    
    展开全文
  • vue导出excel表格Blob,Export2Excel
  • vue导出Excel表格

    2020-12-28 17:54:38
    1.安装导出excel依赖 npm install -S file-saver xlsx npm install -D script-loader 2.在str文件夹中新建文件,引入两份文件 Blob.js和Export2Excel.js 3.在页面中添加导出事件 <el-button type="success" ...

    1.安装导出excel依赖

     	npm install -S file-saver xlsx
    	npm install -D script-loader
    

    2.在str文件夹中新建文件,引入两份文件 Blob.js和Export2Excel.js
    在这里插入图片描述
    3.在页面中添加导出事件

    <el-button type="success" icon="el-icon-download" @click.native.prevent='dialogFormAdd'>导出</el-button>
    
    import { export_excel } from '../../excel/Export2Excel' //引入文件
    export default {
    	data() {
    		return {
    		}
    	},
    	methods: {
    		//导出学生信息
    			dialogFormAdd() {
    				require.ensure([], () => {
    					const tHeader = ['名称', '年龄', '性别',] // 对应表格输出的中文title
    					const filterVal = ['name', 'age','gender' ,] // 对应表格输出的数据 
    					var wjname = '学生信息';
    					//请求后台数据
    					this.$api.WebExportExportCar()
    						.then(res => {
    							if(res.Code == 0) {
    								var list = res.Data //获取的 表格数据
    								const data = this.formatJson(filterVal, list)
    								export_excel(tHeader, data, wjname) // 对应下载文件的名字
    							} else {
    								this.$message.warning('导出失败')
    							}
    						})
    						.catch(error => {})
    				})
    			},
    			//请求的数据跟表格的头部一一对应
    			formatJson(filterVal, jsonData) {
    				return jsonData.map(v => filterVal.map(j => v[j]))
    			},
    	}
    }
    
    展开全文
  • Vue导出excel表格

    2020-11-04 09:28:04
    npm install js-table2excel //导入插件 import table2excel from 'js-table2excel' js-table2excel是通过数据进行打印的所有需要先获取要打印的数据 // 这边是一个数据格式模板,具体数据可以通过查询数据库获得 ...
    // 安装插件
    npm install js-table2excel
    
    //导入插件
    import table2excel from 'js-table2excel'
    

    js-table2excel是通过数据进行打印的所有需要先获取要打印的数据

    // 这边是一个数据格式模板,具体数据可以通过查询数据库获得
     tableData: [{
            user_name: null,
            user_school: null,
            user_grade: null,
            user_jobs: null,
            user_type: null
          }],
    

    点击导出的时候调用exportExcel方法

    exportExcel() {
            // 1.title为列名
            // 2.key为data数据每个对象对应的key
            // 3.若为图片格式, 需要加type为image的说明,并且可以设置图片的宽高
          const column = [
            {
              title: '姓名',
              key: 'user_name',
              type: 'text'
            },
            {
              title: '年级',
              key: 'user_grade',
              type: 'text'
            },
            {
              title: '学校',
              key: 'user_school',
              type: 'text'
            },
            {
              title: '期望职位',
              key: 'user_jobs',
              type: 'text',
              width: 80,
              height: 50
            },
            {
              title: '求职者类型',
              key: 'user_type',
              type: 'text',
            },
          ]
    
    
          const data = this.allData
          const excelName = `模拟面试报名数据`
          table2excel(column, data, excelName)
        },
        // 方法执行时页面会让选择一个路径用于保存excel表格
    
    展开全文
  • vue 导出 excel表格

    2019-09-24 12:49:47
    一、安装 npm install -S file-saver xlsx ...1)在src目录下新建excel文件夹,里面放入Blob.js和Export2Excel.js两个JS文件 链接:https://pan.baidu.com/s/1-zRnhSY7b__R2ifp5Xr2nQ 提取码:0lhk ...
  • vue 导出 Excel 表格

    2019-04-01 17:06:47
    https://blog.csdn.net/weixin_39921345/article/details/83106072添加链接描述
  • 转载自:vue导出excel表格 完全按照上面博客的步骤操作进行,其中出错的坑在于:复制export2Excel()方法后,要把里面的require中的路径改成自己项目对应的路径。 需要注意的是,装完相应的loader后,要重新打包项目...
  • 示例demo 代码示例建立项目vue init webpack excel-export 建立excel-export项目 cd excel-export 进入excel-export文件夹下 npm install 安装依赖 npm run dev ...
  • vue 导出excel表格实践

    2019-03-29 16:38:49
    vue导出Excel,依赖于如下两个插件 cnpm install --save xlsx file-saver cnpm install -D script-loader 插件安装后:需要建立一个vendor文件夹,有如下两个js 使用,书写导出方法 expor...
  • Vue导出Excel表格数据

    2019-12-17 20:59:55
    背景:现在的项目需要做这个功能,之前没有处理过,记录下来方便...第二步:新建js文件夹,也可以命名为excel,用于存放Blob.js和Export2Excel.js两个js文件 第三步:具体的使用方法 主要是两个方法,之前我看的是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,125
精华内容 450
关键字:

vue导出excel表格

vue 订阅