JS 使用XLXS 解析获取EXCEL文件内容

697 阅读1分钟

使用XLSX获取EXCEL文件内容

现在我们需要将files转化成我们熟悉的数组类型。 我们使用XLSX.read()方法。

// FileReader共有4种读取方法: 
// 1.readAsArrayBuffer(file):将文件读取为ArrayBuffer。 
// 2.readAsBinaryString(file):将文件读取为二进制字符串 
// 3.readAsDataURL(file):将文件读取为Data URL 
// 4.readAsText(file, [encoding]):将文件读取为文本,encoding缺省值为'UTF-8'
const transFile = async (file: File, sheetName: string, parser: any) => {
//获取文件的arrayBuffer 
    const buffer = await file.arrayBuffer()
    //XLSX读取文件的方式 种类为arrayBuffer 
    const workbook: any = XLSX.read(buffer, { type: 'buffer' })
    //传入sheet名字 并获取对应的sheet 这里是只有一表
    const sheet = workbook.Sheets[sheetName]
    const json: any = XLSX.utils.sheet_to_json(sheet, {
        header: 1,
        defval: '',
    })

    if (!sheet) return undefined
    
    sheet['!merges']?.forEach((merge: any) => {
        const column = merge.s.c
        const start = merge.s.r
        const end = merge.e.r

        const value = json[start][column]

        for (let i = start + 1; i <= end; i++) {
            json[i][column] = value
        }
    })
    //产生文本json 并自定义parser的方法
    return parser(json)
}