前端方式實現excel下載

shino_1125發表於2020-11-15

前言

提示:因為業務需求,某些資料已經一次性從介面獲取到,因此前端可以直接實現下載功能,不必去麻煩後端同學。


正文

參考程式碼

程式碼如下(示例):

import Excel from 'exceljs'
import { saveAs } from 'file-saver'

// 初始化excel
const wb = new Excel.Workbook()
const ws = this.wb.addWorksheet('Sheet1')

// 模擬資料
const mockData = [{name:'shino',id:1},{name:'peter',id:2}]
// 設定表頭
ws.columns = [{header:'姓名',key:'name',width:50},{header:'編號',key:'id',width:50}]
// 迴圈新增資料
mockData.forEach(v=>{
	ws.addRow(v)
})

// 下載實現
wb.xlsx.writeBuffer().then(buffer => {
  saveAs(
    new Blob([buffer],
      { type: 'application/octet-stream' }),
    `自定義檔名字.xlsx`
  )
}).catch(err => {
  console.log(err)
})

該處使用的url網路請求的資料。


總結

注意: 1.關鍵方法是wb.xlsx.writeBuffer,在記憶體中實現excel的讀寫; 2.exceljs在處理excel檔案中有許多強大的功能,如寬度、超連結等等,具體可參考exceljs官網。

相關文章