网上总结方法比较零散,现总结下使用方法和遇到的问题:
1,安装依赖
cd到Vue项目目录,执行以下命令
npm install file-saver --save
npm install xlsx --save
npm install script-loader --save-dev
2,将工具文件放入工程,一般为:
src文件下新建文件vendor,将Blob.js和 Export2Excel.js两个文件拖进去,两个文件链接链接: https://pan.baidu.com/s/1cOAfqoOLsU1MK_evof099Q 提取码: yx3k
3,网络上错误的配置:(
更改webpack.base.conf.js配置
在resolve的alias添加:
'vendor': path.resolve(__dirname, '../src/vendor'),
相应的调用方法里面有句调用路径:
const { export_json_to_excel } = require('../../../vendor/Export2Excel');
)
以上操作一直提示错误../../../src/vendor/Export2Excel in ./node_modules/babel-loader/l...,就是找不到文件路径,还让我改相对路径,永远不正确。
以下是正确配置:
webpack.base.conf.js里边resolve-alias信息不用添加。
修改Export2Excel.js文件(网上下载的两个文件之一),在第二行的位置,做如下修改配置:
require('script-loader!@/vendor/Blob');
这样路径是对的,和webpack.base.conf.js中resolve下alias的
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': resolve('src'),
}
是对应的。
4,上代码:
script部分:
data(){
return{
list:[
{
name:'韩版设计时尚风衣大',
number:'MPM00112',
salePrice:'¥999.00',
stocknums:3423,
salesnums:3423,
sharenums:3423,
},
{
name:'韩版设计时尚风衣大',
number:'MPM00112',
salePrice:'¥999.00',
stocknums:3423,
salesnums:3423,
sharenums:3423,
},
]
}
methods:{
formatJson(filterVal, jsonData) {
return jsonData.map(v => filterVal.map(j => v[j]))
},
export2Excel() {
require.ensure([], () => {
const { export_json_to_excel } = require('@/vendor/Export2Excel');
const tHeader = ['商品名称','商品货号','售价','库存','销量','分享',];
const filterVal = ['name', 'number', 'salePrice', 'stocknums', 'salesnums', 'sharenums', ];
const list = this.goodsItems;
const data = this.formatJson(filterVal, list);
export_json_to_excel(tHeader, data, '商品管理列表');
})
}
}
template:
<button @click="export2Excel">导出</button>
以上代码摘自网上,但是需要注意路径要做相应修改
const { export_json_to_excel } = require('@/vendor/Export2Excel');
这样文件就可以导出。
5,以上操作完,还是可能会遇到问题
TypeError: webpack_require(...) is not a function
这是因为extract-text-webpack-plugin 插件的使用。安装配置好即可。
安装
npm install extract-text-webpack-plugin --save-dev
使用
webpack.base.conf.js中引入该插件
const ExtractTextPlugin = require("extract-text-webpack-plugin");
在module.exports->module->rules下添加:
{
test: /.css$/,
use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: "css-loader"
})
},
保存即可导出excel文件