php-IE中的Excel导出问题
作者:互联网
我有此脚本将mysql数据导出到excel.我努力了
一切,但我无法使该脚本适用于IE.该
脚本使用FireFox或Chrome下载数据,但IE失败并且
说:
Internet Explorer无法从www.mysite.com下载list_view.php. (这是文件所在的站点).
Internet Explorer无法
打开此Internet网站.请求的站点不可用或
找不到.请稍后再试.
这是我正在使用的代码:
$sql = "SELECT...."
$result = mysql_query($sql)
or die("\nError Retrieving Records.<hr />sql: $sql<hr />ERROR:".mysql_error());
if(mysql_num_rows($result) > 0){
// build a filename that excel will use to save it as
$filename=$name."_".dateFromDB($_GET['confDate']).".xls";
// headers to force the open/save into Excel
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=$filename");
header("Pragma: no-cache");
header("Expires: 0");}?>
<table>
<thead>
<tr>
<th>address</th>
<th>phone</th>
<th>email</th>
<th>status</th>
</tr>
</thead>
<tbody>
<?php // loop over items
while ($row = mysql_fetch_array ($result, MYSQL_ASSOC)) { ?>
<tr>
<td><?=$row['address'];?></td>
<td><?=$row['phone'];?></td>
<td><?=$row['email'];?></td>
<td><?=$row['status'];?></td>
</tr><?php
}?>
</tbody>
</table><?php
exit(); // exit or it will throw an error when it tries to continue
我知道也许有人建议不要使用IE,但是实际上正在使用导出功能的人无法访问其他浏览器.
编辑:
我忘了提到我正在运行SSL(https).如果我关闭SSL,则在IE上一切正常,但在IE上显示SSL时显示错误.
任何想法如何使其在SSL下工作?
解决方法:
头
标头使用IE可能比较棘手.这是东西,您应该将其设置为不像这样缓存:
ini_set('zlib.output_compression','Off');
header('Pragma: public');
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
//header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1
header('Cache-Control: pre-check=0, post-check=0, max-age=0'); // HTTP/1.1
header ("Pragma: no-cache");
header("Expires: 0");
现在可能会有一个问题,如果您的服务器时间未设置为正确的时区,则实际上可能会产生相反的效果,并迫使IE对其进行缓存.确保您的时区设置为您所在的正确时区.它是共享服务器吗?你有ssh访问权限吗?
Excel标头
现在,您需要为IE提供一组标头
header('Content-Transfer-Encoding: none');
header('Content-Type: application/vnd.ms-excel;'); // This should work for IE & Opera
header("Content-type: application/x-msexcel"); // This should work for the rest
header('Content-Disposition: attachment; filename="'.basename($filename).'"');
尝试一下,希望它能工作.
标签:export-to-excel,php,mysql,ssl,excel 来源: https://codeday.me/bug/20191010/1885530.html