#請益 #NodeJs 以buffer傳遞xlsx內容,但下載的檔案損毀

如題, 以下是我的ejs檔(手機排版請見諒🙏🏻) $(window).on("load", async function () { await $.ajax({ 'type': 'GET', 'url': "/Download/orderTypeCSV" }).done((result, status, xhr) => { if (status) { try { const buffer = result; const blobData = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet}); const url = URL.createObjectURL(blobData); const link = document.getElementById("summaryTable"); link.href = URL.createObjectURL(blobData); link.download = 'data.xlsx'; } catch (err) { console.log(err); } }; }); }); 以下是ts檔(typescript) router.get("/Download/orderTypeCSV", async (req: any, res: any, next) => { var workbook = new ExcelJS.Workbook(); // 創建試算表檔案 workbook.creator = "Web"; var sheet = workbook.addWorksheet('工作表範例'); //在檔案中新增工作表 參數放自訂名稱 sheet.addTable({ // 在工作表裡面指定位置、格式並用columsn與rows屬性填寫內容 name: 'table', // 表格內看不到的,讓你之後想要針對這個table去做額外設定的時候,可以指定到這個table ref: 'A1', // 從A1開始 columns: [{ name: '名字' }, { name: '年齡' }, { name: '電話' }], rows: [['小明', '20', '0987654321'], ['小美', '23', '0912345678']] }); //將工作簿的內容寫入到內存緩衝區 workbook.xlsx.writeBuffer().then((buffer) => { try { res.status(200).send(buffer); } catch (error) { console.log(error); } }); 我利用workbook.xlsx.writeBuffer(),將xlsx的檔案內容傳喚前端,且按下summaryTable按鈕也會生成excel,但打開會跑出下面錯誤
megapx
一直找不出是哪裡錯了,我把它和可以正常開起的檔案內容做比對
megapx
左邊是可以正常開啟的,右邊的是我利用程式生成的 它有可能會是因為缺少來源而內容損壞嗎,要如何修正 請求各位大神幫忙🥺
sticker
寫法參考來源:
愛心
6
全部留言