SheetJS,修复记录:/xl/workbook.xml 部分(工作簿)中的工作表属性

Pal*_*tro 4 javascript excel spreadsheet ecmascript-6 sheetjs

我使用SheetJS将数据导出到excel,看起来像excel本身修复数据。数据下载良好,但是收到此警告可以吗?我从 UI 中获取了 file.xlsx,当我通过 Excel 打开它时,我收到了一些由 Excel 本身生成的警告。 截图_5 截图_4

代码:

const download = (url, name) => {
    let a = document.createElement('a')
    a.href = url
    a.download = name
    a.click()

    window.URL.revokeObjectURL(url)
}

function Workbook() {
    if (!(this instanceof Workbook))
        return new Workbook()

    this.SheetNames = []

    this.Sheets = {}
}

function s2ab(s) {
    const buf = new ArrayBuffer(s.length)

    const view = new Uint8Array(buf)

    for (let i=0; i !== s.length; ++i)
        view[i] = s.charCodeAt(i) & 0xFF

    return view
}

export default data => {
    import('xlsx').then(XLSX => {
        const wb = new Workbook()
        const ws = XLSX.utils.json_to_sheet(data)

        wb.SheetNames.push('s')
        wb.Sheets[''] = ws

        const wbout = XLSX.write(wb, {bookType:'xlsx', bookSST:true, type: 'binary'})

        let url = window.URL.createObjectURL(new Blob([s2ab(wbout)], {type:'application/octet-stream'}))

        download(url, 'import.xlsx')
    })
}
Run Code Online (Sandbox Code Playgroud)

小智 8

工作表名称长度不应超过 31。如果工作表名称长度超过 31,Microsoft Excel 将给出错误。