Vue项目中将表格内的数据导出为Excel文件

# Vue项目中将表格内的数据导出为Excel文件
~~~markdown # 首先安装三个依赖 npm install -S file-saver xlsx npm install -D script-loader # 引入两个js文件 在src目录下新建excel文件夹,里面放入Blob.js和Export2Excel.js两个JS文件

https://blog-static.cnblogs.com/files/blogs/680574/Export2Excel.js

https://blog-static.cnblogs.com/files/blogs/680574/Blob.js

 



# 在main.js引入这两个文件(路径取决你们的路径)【也可以不引用】
    import Blob from "@/excel/Blob"
    import Export2Excel from "@/excel/Export2Excel"
~~~

### 正确设置路径

~~~js
# 在Export2Excel.js文件中正确导入Blob.js文件

require('script-loader!file-saver');
// require('script-loader!vendor/Blob');
require('@/excel/Blob');
require('script-loader!xlsx/dist/xlsx.core.min');
~~~

### 调用export2Excel()方法即可导出为excel

~~~js
export2Excel() {
      require.ensure([], () => {
        const { export_json_to_excel } = require('@/excel/Export2Excel');
        // 设置Excel的表格第一行的标题
        const tHeader = [];
        const filterVal = this.singleKeys;
        for (let i = 0; i < filterVal.length; i++) {
          let v = this.singleNames[filterVal[i]];
          tHeader.push(v)
        }

        const list = this.tableData;  //把data里的tableData存到list
        const data = this.formatJson(filterVal, list);
        export_json_to_excel(tHeader, data, '列表excel');
      })
    },
    formatJson(filterVal, jsonData) {
      return jsonData.map(v => filterVal.map(j => v[j]))
    },
~~~

# Vue项目中将表格内的数据导出为Word文件

~~~markdown
npm install -g cnpm --registry=https://registry.npm.taobao.org

# cnpm install docxtemplater pizzip
    https://docxtemplater.readthedocs.io/en/latest/generate.html

# cnpm install jszip-utils --save
    https://stuk.github.io/jszip/

# cnpm install jszip --save

# cnpm install file-saver --save

~~~

# Vue下载文件

~~~markdown
exportWord () {
      this.$axios({
        method: 'get',
        url: this.$settings.HOST + "media/upload/张三.docx",
        // headers里面设置token
        headers: {
          // 'Content-Type': 'application/json',
          // "token":window.sessionStorage.getItem('token')
        },
        data: {
        },
        // 二进制流文件,一定要设置成blob,默认是json
        responseType: 'blob'

      }).then(res => {
        console.log(res)
        if(!res.data){
          return
        }
        var name = "hehehe.docx";
        // var name = this.date + "月" + this.departmentName +"销售分析统计.xls";
        var blob = new Blob([res.data]);
        var url = window.URL.createObjectURL(blob);
        var aLink = document.createElement("a");
        aLink.style.display = "none";
        aLink.href = url;
        aLink.setAttribute("download", name);
        document.body.appendChild(aLink);
        aLink.click();
        document.body.removeChild(aLink); //下载完成移除元素
        window.URL.revokeObjectURL(url); //释放掉blob对象
      })
    },
~~~

 

posted @ 2021-11-25 18:46  167  阅读(190)  评论(0)    收藏  举报