PHP输出Excel-文件格式和扩展名不匹配

时间:2016-10-11 19:59:12

标签: php excel

我制作了一个脚本,输出一个XLS文件,其中包含从我的数据库中提取的数据。问题是,当您在OSX和Linux上查看文件时,它看起来应该如此。

Windows上的行为

在Windows上,Excel显示以下消息。

  

文件格式和扩展名“nameofthefile.xls”不匹配。该文件可能已损坏或不安全。除非你信任......

你有没遇到过这个问题?

$sql    = "MY SQL QUERY";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    $output .= '<table class="table" border="1"
                <tr>
                <th>MY Table heads</th>
                <th>MY Table heads</th> 
               </tr>';

    $count = 1;

    while ($row = mysqli_fetch_array($result)) {
        $data        = strtotime($row['reg_date']);
        $format_date = date("d.M.Y", $data);

        $output .= '
                    <tr>
                    <td>' . $count++ . '</td>
                    <td>' . $row["id"] . '</td>
                       <td>' . $row["firstname"] . '</td>
                          <td>' . $row["lastname"] . '</td>
                                  <td>' . $format_date . '</td>
                    </tr>';
    }
    $output .= '</table>';

    header("Content-Type: application/xls");
    header("Content-Disposition: attachement; filename=download.xls");

    echo $output;


    }
}

2 个答案:

答案 0 :(得分:1)

我使用Laravel和http://www.maatwebsite.nl/laravel-excel/docs有同样的问题,我通过检查是否有一个干净的代码来解决问题,我的代码中有一个撇号(')字符,当我检测到它时刚删除该字符,文件导出成功。祝你好运!

答案 1 :(得分:0)

我在使用laravel的软件包时遇到了同样的问题,经过研究,我知道问题出在web.php文件的编码!在我的情况下,编码文件为UTF-8-BOM,将其更改为UTF-8后,问题解决了! 我用记事本++做过