文件格式和扩展名在Excel中不匹配

问题描述 投票:1回答:1

使用以下代码将MySQL数据导出到Excel文件:

$i = 0;
        while($row=$stmt->fetch(PDO::FETCH_ASSOC))
        {
            $rowData = '';  
    foreach ($row as $value) {  
        $value = '"' . $value . '"' . "\t";  
        $rowData .= $value;  
    }  
    $setData .= trim($rowData) . "\n";
            $i++;

        }
$filename = $i." numbers ".date('d m Y') . ".xls";
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Pragma: no-cache");  
header("Expires: 0");
    echo ucwords($columnHeader) . "\n" . $setData . "\n";   

它成功导出了文件,并且也可以正确打开,但是在打开文件之前会有一个对话框。

Dialogue Box

当我使用扩展名作为xlsx时,文件未打开并显示一个对话框:

Dialogue Box 2

为什么会来以及如何将其删除?

php mysql excel xlsx xls
1个回答
0
投票

您在行中使用了错误的定界符,请改用\ r \ n

    $i = 0;
    while($row=$stmt->fetch(PDO::FETCH_ASSOC))
    {
        $rowData = '';  
        foreach ($row as $value) {  
             $value = '"' . $value . '"' . "\t";  
             $rowData .= $value;  
        }  
     $setData .= trim($rowData) . "\r\n";
     $i++;

    }

如果您愿意,可以尝试

implode(“ \ t”,array_values($ row))。 “ \ r \ n”;

将完整的rowData添加到setData中,php有很多功能可以探索

implodearray_value

另一个认为是,在使用选择结果之前,您应该添加标题行。

© www.soinside.com 2019 - 2024. All rights reserved.