使用ajax调用PHPExcel下载

2023-12-20

App::import('Vendor', 'PHPExcel/Classes/PHPExcel');
$objPHPExcel = new PHPExcel();
$objPHPExcel->getActiveSheet()->setTitle('ReceivedMessages');
header('Content-Type: application/vnd.ms-excel');
$file_name = "kpi_form_".date("Y-m-d_H:i:s").".xls";
header("Content-Disposition: attachment; filename=$file_name");
// If you're serving to IE 9, then the following may be needed
header('Cache-Control: max-age=1');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');

当我直接从浏览器调用上面的代码时,将下载结果文件。但是如果我对上面的代码进行 ajax 调用,我不会收到下载提示。我可以从控制台选项卡中看到 ajax 调用已成功完成,并且在响应数据中可以看到一堆随机字符。我假设那是 Excel 对象。

有谁知道如何使用ajax实现下载excel功能?我不想刷新页面。当用户单击“导出”按钮时,应该有一个对 php 文件的 ajax 调用并提示用户下载。


PHP

$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
ob_start();
$objWriter->save("php://output");
$xlsData = ob_get_contents();
ob_end_clean();

$response =  array(
        'op' => 'ok',
        'file' => "data:application/vnd.ms-excel;base64,".base64_encode($xlsData)
    );

die(json_encode($response));

JS

$.ajax({
    type:'POST',
    url:"MY_URL.php",
    data: {},
    dataType:'json'
}).done(function(data){
    var $a = $("<a>");
    $a.attr("href",data.file);
    $("body").append($a);
    $a.attr("download","file.xls");
    $a[0].click();
    $a.remove();
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用ajax调用PHPExcel下载 的相关文章

  • 删除某个类之后的所有类

    我有一个 lt div id thisdiv class class1 class2 class3 class4 class5 gt text lt div gt 我需要能够使用 jQuery 删除 class3 之后的所有类 就像是 th
  • MySQL 追加字符串

    How can I append a string to the end of an existing table value Let s say I have the table below And let s say that Mari
  • PHP 与 MySQL 查询性能( if 、 函数 )

    我只看到这个artice http www onextrapixel com 2010 06 23 mysql has functions part 5 php vs mysql performance 我需要知道在这种情况下什么是最好的表
  • 覆盖控制器 Symfony 3.4/4.0

    我目前正在尝试覆盖 FOSUserBundle 中的控制器 在新的文档中 https symfony com doc 3 4 bundles override html https symfony com doc 3 4 bundles o
  • 跟踪用户何时点击浏览器上的后退按钮

    是否可以检测用户何时单击浏览器的后退按钮 我有一个 Ajax 应用程序 如果我可以检测到用户何时单击后退按钮 我可以显示适当的数据 任何使用 PHP JavaScript 的解决方案都是优选的 任何语言的解决方案都可以 只需要我可以翻译成
  • SQL 最近日期

    我需要在 php 中获取诸如 2010 04 27 之类的日期作为字符串 并在表中找到最近的 5 个日期 表中的日期保存为日期类型 您可以使用DATEDIFF http dev mysql com doc refman 5 1 en dat
  • 如果循环中内存超出,我可以在 for 循环中抛出异常吗?

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何处理 foreach 循环中发生
  • 表单提交后如何保留选择字段中的选定值?

    我有一个用于将票证上传到数据库的主页 我有一个选择字段 我想保留用户在提交表单之前选择的值 但它没有发生 这是我选择字段的代码
  • 如何使输入字段和提交按钮变灰

    我想变灰这两件事 http doorsplit heroku com 歌曲输入字段和提交按钮 直到用户输入艺术家 有没有一种简单的方法可以通过 JQuery 来做到这一点 艺术家输入字段的id是 request artist 你可以这样做
  • 如何使用 JQuery 动态排序

    如果我有一个下拉列表和一个列表框 有没有办法使用 JQuery 根据下拉列表对列表框进行排序 举个例子会很有帮助 这会改变下拉菜单中的顺序 您必须根据自己的标准设置顺序
  • 使用 JQuery 更改元素的顺序

    有人知道我做错了什么吗 我正在尝试更改某些图像的显示顺序 我希望每次按下按钮时图像都会向右 向左移动一个位置 这是我尝试过的 但没有运气 任何帮助或见解将不胜感激 rightShift click function img hide var
  • FireFox 中的自动滚动

    我的应用程序是实时聊天 我有一个 Div 来包装消息 每条消息都是一个 div 所以 在几条消息之后 我的 DOM 看起来像这样 div div Message number two div div div div
  • 如何获取给定 DOM 元素的所有定义的 CSS 选择器?

    如何使用 jQuery 获取给定 DOM 元素的所有定义的 CSS 选择器 定义后 我的意思是在应用于任何样式表的所有 CSS 选择器document 在某种程度上 这类似于 FireBug 实现的功能 其中显示所选 DOM 元素的所有应用
  • 如何更改此 jquery 插件的时区/时间戳?

    我正在使用这个名为 timeago 的插件 在这里找到 timeago yarp com 它工作得很好 只是它在似乎不同的时区运行 我住在美国东部 费城时区 当我将准确的 EST 时间放入 timeago 插件时 比如 2011 05 28
  • 内部 while 循环不工作

    这是我项目网页上的代码片段 这里我想显示用户选择的类别 然后想显示属于该类别的主题 在那里 用户可以拥有多个类别 这没有问题 我可以在第一个 while 循环中打印所有这些类别 问题是当我尝试打印主题时 结果只显示一行 但每个类别中有更多主
  • 使用正则表达式提取两个短语之间的所有单词[重复]

    这个问题在这里已经有答案了 我正在尝试使用以下正则表达式提取两个短语之间的所有单词 b item W w W 0 2 1 one W w W 0 3 business b b item W w W 0 2 3 three W w W 0 3
  • 简单的 PHP 表单:电子邮件附件(代码 Golf)

    想象一下 一个用户想要在其网站上放置一个表单 该表单将允许网站访问者上传一个文件和一条简单的消息 该消息将立即通过电子邮件发送 即 该文件未存储在服务器上 或者如果该文件存储在服务器上 仅暂时 作为文件附件 并在邮件正文中添加注释 查看更多
  • 使用 Ajax 请求作为源数据的 Jquery 自动完成搜索

    我想做的事 我想使用 jquery 自动完成函数创建一个输入文本字段 该函数从跨域curl 请求获取源数据 结果应该与此示例完全相同 CSS 在这里并不重要 http abload de img jquerydblf5 png http a
  • jQuery 对象相等

    如何确定两个 jQuery 对象是否相等 我希望能够在数组中搜索特定的 jQuery 对象 inArray jqobj my array 1 alert deviceTypeRoot deviceTypeRoot False alert d
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • JSON解析swift,数组在NSURLSession之外没有值

    我正在尝试使用以下代码快速调用 json webservice 并将其显示在tableview在快速的IOS中 declared as global var IdDEc String string array declared global
  • TinyMCE UTF-8 保存到 MySQL 数据库

    我将 TinyMCE 输入发送到 POST 一个 php 文件 然后将其保存在 MySQL 数据库中 输入具有 UTF 8 土耳其字符 所以当我输入时T rk e在 TinyMCE 输入中并将其发送到 post PHP 后端收到此字符串 p
  • 枚举是否应该具有未初始化的值。

    我们正在争论枚举是否应该具有未初始化的值 例如 我们有 public enum TimeOfDayType Morning Afternoon Evening or public enum TimeOfDayType None Mornin
  • Logstash 文件输入插件

    目前 我正在使用文件输入插件来检查我的日志存档 但文件输入插件对我来说不是正确的解决方案 因为文件输入插件本质上期望该文件是事件流而不是静态文件 现在 这给我带来了很大的问题 因为我的日志存档有 100 000 多个日志文件 而我的 Log
  • 查找访问令牌的过期时间

    有什么方法可以使用图形 api 来查明页面访问令牌或应用程序令牌何时过期 Update 有一个新的 API 端点用于访问有关访问令牌的信息 您可以在这里找到信息 调试访问令牌和处理错误 https developers facebook c
  • 为什么 JavaScript 中带小数的最大位数只有 16

    不久前我在测试一些 HTML 表单时遇到了这个问题 JavaScript 中带小数点的数字的最大位数仅为 16 我尝试过以下方法 var x 12345678912345 6789 x 是 12345678912345 68 仅 16 位数
  • 使用 Conditional 属性标记仅返回任务的异步方法?

    The System Diagnostics ConditionalAttribute对于分割调试代码片段而不需要使用编译器指令确实很有用 但它只与返回的方法兼容void 有没有办法将它 或等效的东西 用于返回 a 的异步方法Task No
  • 请求取消不会传播到云运行容器

    当发送到云运行服务的 HTTP 请求被发起服务取消时 取消 关闭的连接不会传播到云运行容器内正在服务的请求 示例代码 package main import log net http os time func main port os Ge
  • bash:mkvirtualenv:找不到命令

    按照以下说明进行操作后道格 海尔曼的virtualenvwrapper post https doughellmann com posts virtualenvwrapper 我仍然无法启动测试环境 mpenning tsunami mkv
  • COM 互操作传递错误的指针,只有一个字节的数据

    我在使用 COM 将指针传递给本机代码时遇到问题 我想在托管 C 代码中构建一个字节数组 并将该数组传递给本机 C 代码 我正在处理托管代码方面 我的同事负责本机方面 请注意 我在托管方面更强大 并且我几乎一直在使用所写的 COM 对象 C
  • 如果已选择,则单击时取消选择 GridView.Item

    我知道这看起来很简单 我也是这么想的 但实际上并非如此 我有一个 GridView SelectionMode Single 我想通过单击来简单地取消选择选定的项目 问题是 当您选择已选择的项目时 SelectionChanged 不会触发
  • 分钟变化时不调用 TIME_TICK

    我面临的问题是 当时间更改时 TIME TICK 仅在应用程序运行时调用 但我希望即使应用程序正在运行或不使用广播接收器也能调用它 主要活动 public class MainActivity extends Activity Overri
  • 如何在一个命令中执行多个 lein 任务?

    我是莱宁根的新手 当我尝试执行以下操作时 lein clean jar I got Wrong number of arguments to clean task Expected 如何在一个命令中执行多个任务 是的 可以执行多个莱宁根通过
  • Delphi Xe2 VCL 样式和网页浏览器

    Win7 x64 Delphi Xe2 更新2 Prompt 新项目编译为x32 在项目选项中应用视觉 vcl 样式 默认选择一种 在表单上的button1和WebBrowser1 在按钮中我们编写WebBrowser1 Navigate
  • 点击事件在 Chrome 中不起作用,但当我们从控制台手动执行它时,事件会触发

    从几个小时开始 我就试图找到一个棘手的客户问题的根本原因 感谢帮助 客户端 Chrome 浏览器中没有任何点击事件被触发 但是当我们从控制台调用 JavaScript 方法时 它就会触发 在附图中 您可以看到我如何触发该事件 尝试删除 da
  • 具有多个变量的 Sass @each

    我刚刚开始使用 Sass 和 Compass 我很喜欢它 我想做的就是利用 each简化重复性任务的功能 然而 我只看到过这样的例子 each插入一个变量 并且我希望能够使用多个变量 标准方式 从Sass 参考 http sass lang
  • jQuery 全局事件和性能?

    我正在寻找一种使用 jQuery 显示状态指示器的方法 我在 jQuery Cookbook 中找到了一个解决方案 它显示了这个解决方案 function document ready function ajaxStatus ajaxSta
  • 识别 Unix 域套接字连接的另一端

    我试图找出哪个进程正在持有 unix 域套接字的另一端 在一些strace输出 我已经识别出一个给定的文件描述符 该文件描述符涉及我当前正在调试的问题 并且我想知道哪个进程位于该描述符的另一端 由于该套接字有多个连接 因此仅通过路径名是行不
  • 如何计算Python中包含字符串的两个列表的杰卡德相似度?

    我有两个包含用户名的列表 我想计算 Jaccard 相似度 是否可以 This https stackoverflow com questions 11911252 python jaccard distance using word in
  • 使用ajax调用PHPExcel下载

    App import Vendor PHPExcel Classes PHPExcel objPHPExcel new PHPExcel objPHPExcel gt getActiveSheet gt setTitle ReceivedM