前端导出excel文件

用到xlsxfile-saver库,xslx用以转换数据对象到Blob对象中,file-saver用以在客户端保存文件。

import { saveAs } from 'file-saver'
import XLSX from 'xlsx'

export const exportXlsx = (data, fields, fileName = 'excel') => {
    // book_new创建一个workbook对象,主要用到两个属性:SheetNames和Sheets
    // SheetNames包含该excel文件的所有工作表名称
    // Sheets包含每个工作表名称和workSheet的映射关系
    const workBook = XLSX.utils.book_new()
    workBook.SheetNames.push(fileName)

    // json_to_sheet将数据数组转化为一个workSheet对象
    const workSheet = XLSX.utils.json_to_sheet(
        data, 
        { 
            header: fields
        }
    )
    workBook.Sheets[fileName] = workSheet

    // 输出xlsx文件
    const wopts = { bookType: 'xlsx', bookSST: false, type: 'array' }
    const wbout = XLSX.write(workBook, wopts)
    saveAs(new Blob([ wbout ],{ type: 'application/octet-stream' } ), fileName + '.xlsx')
}

也可以不借助file-saver库保存.xlsx文件:

const blob = new Blob([wbout], {
    type: 'application/octet-stream'
})

const a = window.document.createElement('a')
a.href = window.URL.createObjectURL(blob, {
    type: 'data:attachment/xlsx'
})
a.download = 'yourFileName.xlsx'
document.body.appendChild(a)
a.click()
document.body.removeChild(a)

测试exportXlsx函数:

const data = [
 	{
        A1: '1',
        A2: '2'
    }
]
const fields = ['A1', 'A2']
exportXlsx(
    data,
    fields
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值