個人認為前端VUE項目中導出EXCEL比較好的兩種方法,均不是我個人原創,我只是收錄簡單說明,原創地址在下面。
- 下面推薦兩種方法,個人推薦第一種,第二種不做詳細講解,因為作者已經寫過博客了,你們可以點擊下面鏈接去學習一下。
- 第一種vue-json-excel
- 第二種vue2.0-excel
*(備注)第一種方法簡單方便,第二種稍微復雜一點。
下面開始講第一種vue-json-excel
npm安裝依賴包
npm install vue-json-excel
項目入口文件引進注冊並且使用
import Vue from 'vue'
import JsonExcel from 'vue-json-excel'
Vue.component('downloadExcel', JsonExcel)
在頁面中使用
<download-excel
class = "export-excel-wrapper"
:data = "json_data"
:fields = "json_fields"
name = "filename.xls">
<!-- 上面可以自定義自己的樣式,還可以引用其他組件button -->
<!-- <el-button type="primary" size="small">導出EXCEL</el-button> -->
</download-excel>
簡單說明一下組件屬性
- json_data: 需要導出的數據
- json_fields: 自主選擇要導出的字段,指定嵌套數據並將標簽分配給鍵是標簽的字段,值是JSON字段。這將“按原樣”導出字段數據。如果需要自定義導出的數據,可以定義回調函數。
屬性名 | 類型 | 描述 |
---|---|---|
data | Array | 需要導出的數據,支持中文 |
fields | Object | 定義需要導出的數據 |
name | string | 導出EXCEL的文件名 |
type | string | 導出EXCLE的文件類型,兩種格式xls,csv,默認是xls |
可能上面描述不是很明白,下面給個實例,
注意一下幾點
- json_fields里面的屬性是excel表每一列的title,注意多個詞組組成的屬性名要加雙引號
- 如果需要自定義導出的數據,可以定義回調函數。
data() {
return {
json_fields: {
"Complete name": "name", //常規字段
Telephone: "phone.mobile", //支持嵌套屬性
"Telephone 2": {
field: "phone.landline",
//自定義回調函數
callback: value => {
return `Landline Phone - ${value}`;
}
}
},
json_data: [
{
name: "Tony Peña",
city: "New York",
country: "United States",
birthdate: "1978-03-15",
phone: {
mobile: "1-541-754-3010",
landline: "(541) 754-3010"
}
},
{
name: "Thessaloniki",
city: "Athens",
country: "Greece",
birthdate: "1987-11-23",
phone: {
mobile: "+1 855 275 5071",
landline: "(2741) 2621-244"
}
}
],
json_meta: [
[
{
" key ": " charset ",
" value ": " utf- 8 "
}
]
]
};
}
EXCEL截圖
