将頁面中表格資料導出excel格式的檔案(vue)
引言:
項目需要将頁面中的表格資料導出excel格式的檔案,折騰了許久,在網上各種百度,但是各種踩坑,最後看了幾個資料對比解決了。
安裝相關依賴
-
用來生成檔案的web應用程式npm install file-saver --save
-
電子表格格式的解析器npm install xlsx --save
-
将js挂在在全局下npm install script-loader --save-dev
在src目錄下建立vendor檔案夾:(vendor—名字任取)
- 裡面放置兩個核心js檔案
和Blob.js
(百度可下載下傳)Export2Excel.js
更改webpack.base.conf.js配置。
- 在resolve的alias裡添加一行如下代碼:
'vendor': path.resolve(__dirname, '../src/vendor')
- alias是配置别名
在需要導出excel格式檔案的頁面中寫入以下兩個方法,如:
export2Excel() {
const _this = this
require.ensure([], () => {
const {
export_json_to_excel
} = require('@/vendor/Export2Excel');
const tHeader = _this.tHeader;
const filterVal = _this.filterVal;
const list = _this.optionData;
const data = _this.formatJson(filterVal, list);
export_json_to_excel(tHeader, data, '眼健康名額');
})
},
formatJson(filterVal, jsonData) {
return jsonData.map(v => filterVal.map(j => v[j]))
}
-
表示表頭的标題,類似格式>>>tHeader
;['年級', '統計人數', '左眼平均視力']
-
表示表頭的字段名,類似格式>>>filterVal
;['gradeName', 'statistics', 'avgLeftVision']
-
表示表格的資料,類似格式>>>list
;[{'gradeName':'一年級','statistics':'100','avgLeftVision'}:5.0]
-
裡面最後一個參數表示導出的表格名稱;export_json_to_excel(tHeader, data, '眼健康名額')
-
方法為格式轉換。formatJson
當我們要導出表格執行 @click
事件調用 export2Excel
函數就行
@click
export2Excel
<button @click="export2Excel">導出</button>
優化一下點選事件,新加一個方法,點選此方法調用
downloadExcel() {
this.$confirm('确定下載下傳清單檔案?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.export2Excel()
}).catch(() => {
});
}
- 這樣點選導出後會詢問是否确定,确定了才會執行
函數export2Excel