簡體   English   中英

PHPExcel輸出到瀏覽器在IE中不起作用

[英]PHPExcel output to browser doesn't work in IE

我有一個PHP腳本,它使用PHPExcel打開模板,從數據庫查詢中插入值,然后將結果返回給瀏覽器。 它在Firefox中完美運行,但在Internet Explorer(8)中,當它試圖打開文件時,它會斷開:

Internet Explorer無法從my.domain下載generate.php。

Internet Explorer無法打開此Internet站點。 請求的網站不可用或無法找到。 請稍后再試。

我正在使用的代碼( 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')

編輯似乎此問題僅在SSL后面影響IE。 因此,這與幾個類似的SO問題是相同的問題。 人們的建議是調整標題,但到目前為止,我所看到的解決方案的組合並沒有起作用......

如果以上都不適用於您,並且您仍希望在SSL下運行,則可以始終將文件寫入磁盤並提供下載鏈接,或者您可以提示用戶輸入電子郵件地址並將該文件作為附件發送電子郵件。 如果你去電子郵件路線,PHPMailer有一個相當簡單的方式發送附件。 我不是100%肯定,但我認為在使用PHPMailer附加文件之前需要將文件寫入磁盤,但是您可以在發送后立即取消鏈接文件。

這一切都歸結為IE對您設置的標題的處理。 微軟自己對這個已知問題的回答應該為你解決問題。

解決方案摘要:“刪除無緩存標頭或標頭。”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM