Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当用PHP创建的csv文件导入Excel时,如何保持数字字符串值中的前导零?_Php_Excel_Csv_Leading Zero_Postdata - Fatal编程技术网

当用PHP创建的csv文件导入Excel时,如何保持数字字符串值中的前导零?

当用PHP创建的csv文件导入Excel时,如何保持数字字符串值中的前导零?,php,excel,csv,leading-zero,postdata,Php,Excel,Csv,Leading Zero,Postdata,我有一个代码,它创建了一个CSV文件,并将某些数据放入其中。这些数据中有些是文本,有些是数字字符串。在Excel中导入此CSV文件时,程序会从数字字符串(电话号码和邮政编码)中删除前导零。是否有一种方法可以格式化/更改这些数字字符串值,以便Excel能够以保留前导零的方式读取它们?或者只是Excel的问题,这个问题应该从那里解决 我试着在数字字符串之前加上撇号,数字会在那里,但撇号也会保留,我不想这样 $dataorder = ["Receiver:", $_POST['orderperson'

我有一个代码,它创建了一个CSV文件,并将某些数据放入其中。这些数据中有些是文本,有些是数字字符串。在Excel中导入此CSV文件时,程序会从数字字符串(电话号码和邮政编码)中删除前导零。是否有一种方法可以格式化/更改这些数字字符串值,以便Excel能够以保留前导零的方式读取它们?或者只是Excel的问题,这个问题应该从那里解决

我试着在数字字符串之前加上撇号,数字会在那里,但撇号也会保留,我不想这样

$dataorder = ["Receiver:", $_POST['orderperson'], $_POST['address'], $_POST['postnumber'], $_POST['city'], $_POST['email'], $_POST['phone']];

fputcsv($fh, $dataorder, $delimeter);

Excel不知道如何处理只包含数字的字段,因此它会修剪任何前导零。在CSV生成过程中,您无能为力。您可以做的是告诉excel在导入CSV文件时如何处理每个数据列。在步骤3,当您导入文本数据(数据选项卡>从文本>选择csv文件)时,excel允许您选择默认为
常规的每个列数据类型;将数字字段更改为
Text
,并保留所有前导零。下面是文本导入器步骤3的屏幕截图,它是希腊文的,但你会明白要点(
ενκκκή->常规
εείμενο->文本
):


这是excel的问题,不是PHP的问题。使用“从文本导入”命令,将电话号码、邮政编码字段作为文本导入。在Excel中,您可以添加一个
单引号前缀,告诉Excel这是一个文本,即使它包含数字。因此,在将字段写入csv文件之前,在PHP中的字段中添加一个
。导入文件时的问题是Excel从一开始就删除了0。将格式更改为文本不会使其返回。Riggs,就像我在文本中所说的,我尝试过,但我不希望引用保留在那里,即使没有删除零。@SalmanA哦,对了,我没有使用Power Query视图来帮助我在导入前将字段格式化为文本。非常感谢。