编程语言
首页 > 编程语言> > php-IE中的Excel导出问题

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