在將 .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")
})
想知道是否還有其他選擇。
uj5u.com熱心網友回復:
基于 xlsx 的自述檔案嘗試使用writeFileAsync或只是write代替writeFile它強制瀏覽器開始下載
uj5u.com熱心網友回復:
我是這樣修復的:
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");
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/349641.html
標籤:javascript 反应 文件 xlsx
