XLSX 到 CSV 文件转换为 API 调用
XLSX to CSV file convert for API call
我正在尝试将 .xlsx 文件转换为 .csv 文件,然后再将其发送到 API(因为它只接受 .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")
})
想知道是否还有其他选择。
基于 xlsx 的自述文件,尝试使用 writeFileAsync
或 write
而不是 writeFile
,因为它会强制浏览器开始下载
我是这样修复的:
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");
我正在尝试将 .xlsx 文件转换为 .csv 文件,然后再将其发送到 API(因为它只接受 .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")
})
想知道是否还有其他选择。
基于 xlsx 的自述文件,尝试使用 writeFileAsync
或 write
而不是 writeFile
,因为它会强制浏览器开始下载
我是这样修复的:
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");