简介
js导出excel,(数据不分页的情况下,即前端能拿到全部数据才能导出全部数据),原文链接https://blog.csdn.net/weixin_46705618/article/details/107377103
1.安装依赖包
| 12
 3
 
 | npm  install  -S file-savernpm  install  -S  xlsx
 npm  install  -D script-loader
 
 | 
2.把两个js文件放到项目里 Blob.js、Export2Excel.js
地址(私有库):https://gitee.com/lishichang/common/tree/master/Export2Excel
3.main.js中引入
| 12
 
 | import Blob from './Excel/Blob.js'import Export2Excel from './Excel/Export2Excel.js'
 
 | 
4.vue组件(element-ui的按钮)
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 
 | <template><!-- v-bind="excelData" // 父组件传给此组件的数据
 excelData: {
 title: "", // 标题
 filterField: [], // 字段['name','age']
 tHeader: [], // 表头['姓名','年龄']
 list: [] // 数据[{name:'1',age:18},{name:'2',age:19}]
 } -->
 <el-button class="public-btn" @click="export2Excel">{{btnText}}</el-button>
 </template>
 <script type="text/javascript">
 export default {
 name: 'ExportExcel',
 props:{
 title:{
 type:String,
 default:''    // 文件名称
 },
 filterField:{
 type:Array,
 default:()=>[]      //  字段  [name,age]
 },
 tHeader:{
 type:Array,
 default:()=>[]      // 表格顶部名称    [名称,性别]
 },
 list:{
 type:Array,
 default:()=>[]      // 数据 [{name:'张三',age:16}]
 },
 btnText:{
 type:String,
 default:'导出Excel'   // 按钮名称 默认为导出excel
 }
 },
 computed:{
 listData(){
 return (this.btnText).indexOf('导出')>-1?this.list:[];
 }
 },
 methods: {
 formatJson(filterField, jsonData) {
 return jsonData.map(function(dataObj) {
 return filterField.map(function(field) {
 let fieldObj = dataObj[field];
 if (!fieldObj) {
 fieldObj = "-";
 }
 return fieldObj;
 });
 });
 },
 export2Excel() {
 require.ensure([], () => {
 let { export_json_to_excel } = require("@/Excel/Export2Excel");
 let data = this.formatJson(this.filterField, this.listData);
 let title = this.btnText=='导出excel'?this.title:this.title+'';
 export_json_to_excel(this.tHeader, data, title);
 });
 }
 }
 };
 </script>
 
 
 | 
5.使用组件
| 1
 | <export-excel v-bind="excelData"></export-excel>
 |