Php 正在尝试使用excel mime导出前导为0的特定SQL数据

Php 正在尝试使用excel mime导出前导为0的特定SQL数据,php,phpexcel,Php,Phpexcel,[这是输出] 试图通过循环数组将SQL数据导出为excel文件,但未能导出数据的前导0 我曾试图在“内爆”中添加一个引号,但仍然不起作用 header("Content-Disposition: attachment; filename=\"$filename\""); header("Content-Type: application/vnd.ms-excel"); $user_query = mysqli_query($conn,$sql); //echo $user_query; // W

[这是输出] 试图通过循环数组将SQL数据导出为excel文件,但未能导出数据的前导0

我曾试图在“内爆”中添加一个引号,但仍然不起作用

header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-Type: application/vnd.ms-excel");
$user_query = mysqli_query($conn,$sql);
//echo $user_query;
// Write data to file
$flag = false;
while ($row = mysqli_fetch_assoc($user_query)) {
    if (!$flag) {
        // display field/column names as first row
        echo implode("\t", array_keys($row)) . "\r\n";
        $flag = true;
    }
        echo implode("\t", =array_values($row)) . "\r\n";

}
期望使用单引号“\t'”内爆,但仍然无法 导出前导0


像这样更改
内爆
,使每个值都用单引号引起来:

echo "'".implode("'\t'", array_values($row)) . "'\r\n";

更新

仅引用前导为零的字段:

echo implode("\t", array_map('leadZero', $row))."\r\n";

function leadZero($element)
{
  return substr(trim($element),0,1) === "0" ? "'".$element."'" : $element;
}

能否显示
$row
输出?您在
$row
中拥有的内容,请停止与
内爆
的混淆,并首先使用
fputcsv
。(例如,如何使用后者直接下载,而不是写入实际文件,请参见)@misorude我认为不需要CSV。他使用的是XLS头。@BramVerstraten“他使用的是XLS头”-是的,但实际的数据格式仍然非常类似CSV。您不局限于使用该函数创建“经典”CSV数据,它可以使用任何字符作为分隔符和附件。(但它不会将前导0的值用引号括起来-也许我会使用快速的
数组\u walk
)显示
数组\u值($row)
的内容或一行生成的内容。您好,您的代码工作正常,但不是我期望的方式。是否仍然可以只针对前导为0的数据将单引号放在其中?前导为0的字段仍然存在,但我收到消息“未初始化字符串偏移量:0”好的,用
substr()更改字符串偏移量运算符
{}