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


PHP output Excel-The file format and extension don't match

我制作了一个脚本,该脚本输出带有从数据库带来的数据的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;

    }
}

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

我对laravel的这个包有同样的问题,经过研究,我知道问题是web.php文件的编码!在我的情况下,编码文件是UTF-8- bom,当它改变为UTF-8问题解决了!我用的是notepad++