1 安裝依賴
npm i jszip -S //安裝zip
npm install -S file-saver xlsx
npm install -D script-loader
2 再項目中創建文件夾 src 下創建(vendor)
放入 兩個文件 里面放置兩個文件Blob.js和 Export2Excel.js
Export2Zip.js (zip)
3. 導入 export2Excel,
再build 文件夾下 webpack.base.conf.js
'vendor': path.resolve(__dirname, '../src/vendor')
4. 調用
導出excel
zip_down(){ this.downloadLoading = true require.ensure([], () => { const { export_json_to_excel } = require('@/vendor/Export2Excel') const tHeader = ['序號'] const filterVal = ['name'] const list = this.tableData //導入數據 const data = this.formatJson(filterVal, list) export_json_to_excel(tHeader, data, '列表文本', '壓縮文本') this.downloadLoading = false }) }, formatJson(filterVal, jsonData) { return jsonData.map(v => filterVal.map(j => v[j])) }
導出 zip
zip_down(){ this.downloadLoading = true require.ensure([], () => { const { export_txt_to_zip } = require('@/vendor/Export2Zip') const tHeader = ['序號'] const filterVal = ['name'] const list = this.tableData const data = this.formatJson(filterVal, list) export_txt_to_zip(tHeader, data, '列表文本', '壓縮文本') this.downloadLoading = false }) }, formatJson(filterVal, jsonData) { return jsonData.map(v => filterVal.map(j => v[j])) }
Export2Zip.js 文件
/* eslint-disable */ require('script-loader!file-saver'); import JSZip from 'jszip' export function export_txt_to_zip(th, jsonData, txtName, zipName) { const zip = new JSZip() const txt_name = txtName || '文本' const zip_name = zipName || '壓縮包' const data = jsonData let txtData = `${th}\r\n` data.forEach((row) => { let tempStr = '' tempStr = row.toString() txtData += `${tempStr}\r\n` }) zip.file(`${txt_name}.txt`, txtData) zip.generateAsync({type:"blob"}).then((blob) => { saveAs(blob, `${zip_name}.zip`) }, (err) => { alert('導出失敗') }) }