前端 XLSX 读写文件

4 阅读1分钟
/**
 *  下载文件
 * @param {Array} sheetData 二维数组
 * @param {String} fileName 下载时文件名称
 */
export const exportFileByXlsx = (sheetData, fileName = "example") => {
  const ws = XLSX.utils.aoa_to_sheet(sheetData);
  const workbook = XLSX.utils.book_new();
  XLSX.utils.book_append_sheet(workbook, ws, "sheet1");
  XLSX.writeFile(workbook, fileName + ".xlsx", { type: "binary" });
};

/**
 * 读取文件
 * @param file
 * @returns {Promise<Array>}
 */
export const readFileByXlsx = (file) => {
  const reader = new FileReader();
  reader.readAsArrayBuffer(file);
  return new Promise((resolve, reject)=>{
    reader.onload = (e)=>{
      const workbook = XLSX.read(reader.result, { type: "buffer" });
      const XL_ROW_OBJECT = XLSX.utils.sheet_to_json(
        workbook.Sheets[workbook.SheetNames[0]]
      );
      resolve(XL_ROW_OBJECT)
    }
  })
};