当前位置: 首页 > news >正文

前端接EXCEL

一  后端返回的是文件流

/*** 下载文件统一封装* @param {string} url 文件接口* @param {string} filename 下载文件名*/
export const axiosDownload = async (url, filename) => {try {const res = await fetch(url, {method: 'GET',credentials: 'include',});if (!res.ok) {const errText = await res.text();throw new Error(`HTTP错误: ${res.status},返回内容:${errText}`);}// 这里用 text(),因为后端返回的是 HTMLconst text = await res.text();// 生成 Excel 文件const blob = new Blob([text], {type: 'application/vnd.ms-excel;charset=utf-8',});const blobUrl = window.URL.createObjectURL(blob);const a = document.createElement('a');a.href = blobUrl;a.download = filename;document.body.appendChild(a);a.click();document.body.removeChild(a);window.URL.revokeObjectURL(blobUrl);return { code: 200 };} catch (err) {console.error('❌ 文件下载失败:', err);return { code: 500, msg: err.message };}
};

二 后端返回的是纯文本

/*** 下载文件统一封装* @param {string} url 文件接口* @param {string} filename 下载文件名*/
export const axiosDownload = async (url, filename) => {try {const res = await service.get(url, {responseType: 'text', // 强制按文本拿withCredentials: true});const blob = new Blob([res], { type: 'application/vnd.ms-excel;charset=utf-8' });const blobUrl = window.URL.createObjectURL(blob);const a = document.createElement('a');a.href = blobUrl;a.download = filename;document.body.appendChild(a);a.click();document.body.removeChild(a);window.URL.revokeObjectURL(blobUrl);toast('下载成功', 'success');return { code: 200 };} catch (err) {console.error('❌ 文件下载失败:', err);toast('下载失败:' + err.message, 'error');return { code: 500, msg: err.message };}
};

后端:纯HTML返

    // 发票——导出excelpublic function exportInvoiceExcel(Request $request){$id = $request->route('id');// 获取发票信息$invoice = $this->orderButtonService->getInvoice($id, 'I');$consignee = $invoice['consignee_info']['CONS_NM_EN'] ?? '';$fname = $id . '_Invoice_' . $consignee;// 替换特殊字符,避免文件名无效$fname = preg_replace('/[\/\\\?\%\*\:\|\"\<\>]/', '_', $fname);$encodedName = rawurlencode($fname);$html = view('admin.invoice_excel', compact('invoice'))->render();return response($html)->header('Content-Type', 'application/vnd.ms-excel')->header('Content-Disposition', "attachment; filename=\"{$encodedName}.xls\"; filename*=UTF-8''{$encodedName}.xls");}

http://www.dtcms.com/a/478150.html

相关文章:

  • 深圳企业网站建设推荐公司网站开发的方法
  • 网站建设 价格wordpress管理员改为投稿者
  • 2025程序综合实践第三次DFS2
  • 记录一次前端文件缓存问题
  • 深度预测调和网络(DFRN)医疗应用编程路径分析
  • bkhtmltopdf - 高性能 HTML 转 PDF 工具(代替 wkhtmltopdf)
  • OpenCV基础入门2
  • 数据结构——二叉树的从前序与中序遍历序列构造二叉树
  • 做网站要用到的技术网站维护主要做哪些
  • 聚焦string:C++ string 核心接口、编译器差异与自定义实现的深度剖析
  • 【Java集合体系】全面解析:架构、原理与实战选型
  • 999免费的网站北京网站设计方案
  • 复制和粘贴快捷键ctrl加什么?【图文详解】电脑复制粘贴快捷键?剪贴板历史记录?电脑快捷键大全?快捷键操作?
  • 手机网站样式专门做婚庆的网站
  • 知识付费产品:如何与用户建立长期价值共生关系?
  • 操作【GM3568JHF】FPGA+ARM异构开发板 使用指南:音频接口
  • Redis -持久化
  • [css]基础知识和常见应用
  • 电子商务网站的建设费用案例涿州网站建设
  • 企业网站推广哪家公司好惠州网站建设方案外包
  • 容器管理不再受限!PortainerCE+cpolar打造云端数字指挥中心
  • 无人机抗电磁干扰机理与抗干扰技术研究综述
  • Spring Batch 容错机制分析
  • 【C++ Primer】第三章:字符串、向量与数组
  • Allegro X Advanced Designer 23.1 设计约束
  • 【Leetcode hot 100】4.寻找两个正序数组的中位数
  • HTB 赛季9靶场 - Signed
  • 任务栏透明度调节工具
  • 网站企业电子商务网站建设教学计划
  • 淘宝一番赏抽赏小程序:开启趣味抽赏新体验