首页 > 解决方案 > XLSX 到 CSV 文件转换为 API 调用

问题描述

我试图在将 .xlsx 文件发送到 API 之前将其转换为 .csv 文件(因为它只接受 .csv 文件);

我正在使用包 xlsx 并且我得到了这个为我转换它的函数,但问题是这个函数会让用户下载文件,我不希望我只是希望它像一个对象一样保存它所以我只能将它用于 api(并且不要让用户知道它的转换)。

这是代码:

    file.arrayBuffer().then(res => {
            let data = new Uint8Array(res)
            let workbook = XLSX.read(data, {type: "array"})
            let first_sheet_name = workbook.SheetNames[0]
            let worksheet = workbook.Sheets[first_sheet_name]
            let jsonData = XLSX.utils.sheet_to_json(worksheet, {raw: false, defval: null})
            let fileName;
            if (file) {
                fileName = file?.name.substring(0, file?.name?.indexOf("."))
            }
            let new_worksheet = XLSX.utils.json_to_sheet(jsonData);
            let new_workbook = XLSX.utils.book_new();
            XLSX.utils.book_append_sheet(new_workbook, new_worksheet, "csv_sheet")

            getRandomRows(jsonData)
            XLSX.writeFile(new_workbook, fileName + ".csv")
            
        })

想知道是否还有其他选择。

标签: javascriptreactjscsvxlsx

解决方案


我这样修复它:

        let dataToSheet = XLSX.utils.json_to_sheet(data)
        const dataFileCSV = XLSX.utils.sheet_to_csv(dataToSheet, {raw: false, defval: null});
        let blob = new Blob(["\ufeff", dataFileCSV]);
        let fileBlob = new File([blob], "name");


推荐阅读