一般的文件導出都是后端進行導出,最近一個項目遇到導出接口掛掉了,前端實現導出的情況。
背景是vue框架,iView組件。可以直接使用exportCsv方法進行導出。
導出時進行一下行和列的切割就可以了。
成功導出后,打開發現身份證號、手機號等超過10位的被默認科學計數法了。雖然數據是字符串,但是導出的時候還是被默認當成了數值。於是就被使用了科學計數法。表格點擊一下就會自動變成數字的,但是對於我們開發人員來說,能做的更好當然還是要做到最好。
解決方法:在數據篩選的時候手動處理一下。直接上代碼
export2Excel() { if (this.selectedUserId.length < 1) { this.$Message.error("請選擇要導出的行"); return false; } this.$refs.selection.exportCsv({ filename: '導出文件', columns: this.columns.filter((col, index) => index < 11 && index > 0), data: this.transCharactor(this.dataTable.filter((data, index) => this.selectedUserId.indexOf(data.userId) > -1)) }); }, transCharactor(dataList) { $.each(dataList, function(index, e) { for (var v in e) { e[v] = "\t" + e[v].toString() } }) return dataList }
由於這里的數據都是字符串,所有我直接就使用了toString。
方法原則就是轉換成字符,而且拼接上別的字符使其不會被當成數字處理。(e[v] = "\t" + e[v].toString())
除此之外,網上還有拼接單引號的方法,但是這個方法會導致看起來不舒服,試想每個單元格都多了一個單引號,總是不好的。