纯前端实现将动/静态数据导出为文件的功能;后台接口只需常规返回数据即可。
(场景:一般对导出内容无样式需求时)
比如下载为excel文件,代码如下(示例):
import xlsx as 'xlsx'
async handleExport() {
const workSheetHeader = ['标题1', '标题2', '标题3', '标题4']
const res = await getData() // 从接口获取数据
const dataToSave = res.map(it => ({
[workSheetHeader[0]]: it.xxx,
[workSheetHeader[1]]: it.xxx,
[workSheetHeader[2]]: it.xxx,
[workSheetHeader[3]]: it.xxx
})
const workSheet = xlsx.utils.json_to_sheet(dataToSave, {
header: workSheetHeader
})
const workBook = xlsx.utils.book_new()
xlsx.utils.book_append_sheet(workBook, workSheet, 'sheet1')
xlsx.writeFile(workBook, '数据.xlsx')
}
handleExport()
提示,xlsx提供4种导出API:
XLSX.write(wb, options)
XLSX.writeXLSX(wb, options)
XLSX.writeFile(wb, filename, options)
XLSX.writeFileXLSX(wb, filename, options)
后两种是直接下载为本地文件,options非必传;前两种是返回文件值,且options必传,必须指定以下属性
- bookType(导出文件的文件格式):xlsx/xlsm/xlsb/biff8/biff5/biff4/biff3/biff2/xlml/numbers/ods/fods/wk3/csv/txt/sylk/html/dif/dbf/wk1/rtf/prn/eth
- type(返回值类型):base64/binary/string/buffer/array/file
对于专门导出到XLSX的网站,这些功能可以缩小生产网站的大小。当导出为XLS或XLSB或其他格式时,一般的write和writeFile函数更合适。