1

PHPExcel を使用してテンプレートを開き、データベース クエリから値を挿入して、結果をブラウザに返す PHP スクリプトがあります。Firefox では完全に動作しますが、Internet Explorer (8) では、ファイルを開こうとすると、次のように壊れます。

Internet Explorer は、my.domain から generate.php をダウンロードできません。

Internet Explorer はこのインターネット サイトを開くことができませんでした。要求されたサイトは利用できないか、見つかりません。後でもう一度やり直してください。

私が使用しているコード ( generate.php) は次のとおりです。

// Open template
$xlRead = PHPExcel_IOFactory::createReader('Excel5');
$xl = $xlRead->load('Template.xls');

$xl->setActiveSheetIndex(0);

// Write data
$xl->getActiveSheet()->fromArray($dbOutput, null, 'A1');

// Output to browser
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', false);
header('Pragma: no-cache');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename=MyReport.xls');

$xlWrite = PHPExcel_IOFactory::createWriter($xl, 'Excel5');
$xlWrite->save('php://output')

EDITこの問題は、SSL の背後にある IE にのみ影響するようです。そのため、これはいくつかの同様の SO 質問と同じ問題です。人々のアドバイスはヘッダーを微調整することですが、これまでのところ、解決策として私が見たものの組み合わせは機能していません...

4

2 に答える 2

3

上記のいずれもうまくいかず、それでも SSL で実行したい場合は、いつでもファイルをディスクに書き込んでダウンロード リンクを提供するか、ユーザーに電子メール アドレスの入力を求めてファイルを添付ファイルとして電子メールで送信することができます。 . 電子メールの場合、PHPMailer にはかなり簡単に添付ファイルを送信する方法があります。100%確実ではありませんが、PHPMailer を使用して添付する前にファイルをディスクに書き込む必要があると思いますが、送信後すぐにファイルのリンクをいつでも解除できます。

于 2012-10-17T16:13:28.787 に答える
1

それはすべて、IEが設定したヘッダーを処理することにかかっています。この既知の問題に対するMicrosoft自身の回答は、問題を解決するはずです。

ソリューションの概要:「キャッシュなしのヘッダーを削除してください。」

于 2012-08-29T10:06:55.833 に答える