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 上的一切都工作正常,但当 SSL 在 IE 上打开时,就会显示错误。
有什么想法可以让它在 SSL 下工作吗?
I have this script to export mysql data to excel. I have tried
everything but I am not able to get this script to work for IE. The
script downloads the data using FireFox or Chrome but IE fails and
says:
Internet Explorer cannot download list_view.php from www.mysite.com. (this is the site on which the file resides).
Internet Explorer was not able to
open this Internet site. The requested site is either unavailable or
cannot be found. Please try again later.
here is the code that I am using:
$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
I know there maybe some people suggesting not to use IE, but the person who is actually using the export function do not have access to different browser.
EDIT:
I forgot to mention that I am running a SSL(https). If i turn SSL off everything is working fine on IE, but the moment SSL is on the IE shows an error.
Any ideas how to make it work under SSL?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
标头
对于 IE,标头可能会很棘手。事情是这样的,你应该将其设置为不缓存,如下所示:
现在可能存在一个问题,如果你的服务器时间没有设置为正确的时区,这实际上可能会产生相反的效果并强制 IE 缓存它。确保您的时区设置为您所在的正确时区。它是共享服务器吗?你有ssh访问权限吗?
Excel 标头
现在您需要为 IE 提供标头集
尝试一下,希望它能够工作。
Headers
Headers can be tricky with IE. Here's the thing, you should set it not to cache like this:
Now there can be an issue with that if your server time is not set to the right timezone, this may actually have the opposite effect and force IE to cache it. Make sure your timezone is set for the correct timezone you are in. Is it a shared server? do you have ssh access??
Excel Headers
Now what you need is to provide the set of headers for IE
Try that, hopefully it should work.
您是否可以将所有内容输出为 CSV,或者手动格式化它,或者类似
implode('","', $row)
,而不是将所有内容输出为表格?保持内容类型标头不变。我已经成功地做到了这一点,即使在 IE 中也是如此。Instead of outputting everything as a table, can you just output it as CSV, either manually formatting it, or something like
implode('","', $row)
? Leave the content-type header the way it is. I've had success doing that, even in IE.