PHPExcel:由于php输出产生错误?

时间:2013-01-09 21:48:02

标签: php javascript jquery ajax phpexcel

使用PHPExcel构建电子表格后,我无法打开"另存为"或者"打开"对话。我从PHPExcel库附带的examples目录中获得了以下代码片段。

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="01simple.xlsx"');
header('Cache-Control: max-age=0');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
exit;

我的JavaScript:

$(document).on('submit', '#myForm', function(e) {
        $.post('mail.php', $(this).serialize(), function (data) {
            $('.signature-field,.notes').hide();
            //SUCCESS
            $('.successORfail').html(data);
                setTimeout(function(){
                    $(".successORfail").fadeOut("slow", function () {
                        $(".successORfail").empty().show();
                    });
                }, 4500);
        }).error(function() {
            alert("Fatal Error: mail.php not found!");
        });
        e.preventDefault();
    });

注意:上面的代码会生成警告消息"致命错误:找不到mail.php!"我成立了。除此之外,它不会生成任何错误消息,也不会保存或创建Excel文件。

当我使用以下方法时,没有任何标题,excel文件创建完美,并保存在服务器上,没有任何错误:

    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    $objWriter->save('MyExcel.xlsx');

我非常感谢您对此错误进行排查方面的任何帮助,因为我已经在很长一段时间内完成了这项工作。

非常感谢提前!

1 个答案:

答案 0 :(得分:4)

您实际上无法按照尝试这样做的方式执行此操作。 Javascript本身无法在用户的系统上启动文件下载(由于安全问题)。我知道至少有一个jQuery插件,它提供类似AJAX的下载体验。你可以看看这个:

http://johnculviner.com/post/2012/03/22/Ajax-like-feature-rich-file-downloads-with-jQuery-File-Download.aspx