1

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');

私はこれに非常に長い間取り組んできたので、このエラーのトラブルシューティングにご協力いただければ幸いです。

よろしくお願いします!

4

1 に答える 1

4

これをしようとしている方法では、実際にはこれを行うことはできません。Javascript だけでは、ユーザーのシステムでファイルのダウンロードを開始できません (セキュリティ上の問題のため)。私は、AJAX のようなダウンロード エクスペリエンスを提供する jQuery プラグインを少なくとも 1 つ認識しています。あなたはこれをチェックアウトするかもしれません:

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

于 2013-01-09T22:19:27.883 に答える