前端xlsx导出数据下载文件

纯前端实现将动/静态数据导出为文件的功能;后台接口只需常规返回数据即可。

(场景:一般对导出内容无样式需求时)


比如下载为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函数更合适。


更多了解:

前端jszip生成下载zip文件
前端实现将文件流下载导出为文件

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
前端导出大量数据时,常常会遇到导出失败的问题。这往往是因为前端处理大量数据时,会占用太多的内存,导致内存溢出和性能下降。特别是在使用xlsx格式导出数据时,由于xlsx数据格式较为复杂,占用的内存更多。 为了解决这个问题,可以采取以下几种方法: 1. 分批导出:将数据分成多个批次导出,每次导出一部分数据,然后再拼接成完整的xlsx文件。这样可以降低单次导出数据量,减少内存压力。 2. 服务器导出:将导出功能从前端移到后端服务器,使用后端语言处理大量数据,并生成xlsx文件,然后将文件提供给用户下载。由于服务器通常具有更大的内存和处理能力,能够更好地处理大数据导出。 3. 数据分页:只加载当前页面需要展示的数据,而不是一次性加载所有数据。通过分页加载数据,可以减少前端的内存占用,提高导出的性能。 4. 使用压缩算法:对导出xlsx文件进行压缩,减少文件大小,降低内存占用。 5. 使用其他数据格式:考虑是否有必要使用xlsx格式导出数据,是否可以选择其他更轻量级的格式,如csv格式或json格式,以减少内存占用。 综上所述,导出大量数据时,前端需要注意内存占用和性能问题。通过分批导出、服务器导出数据分页、压缩算法和选择合适的数据格式,可以解决前端导出数据量的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Leungwanghoi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值