php - PHP中如何防止字符转换为整数的fputcsv

  显示原文与译文双语对照的内容
51 4

我在页面上有一个链接,当单击时,使用fputcsv将数据的array 导出到 csv 。当Excel显示数据时,有一个类似整数的列,但是它不是,Excel将它转换为科学的符号。如何导出数据以使该列显示为字符( 不是一个科学的数字)?

我用于导出的代码来自Alain的tiemblo答案:链接到代码

function array2csv(array &$array)
{
 if (count($array) == 0) {
 return null;
 }
 ob_start();
 $df = fopen("php://output", 'w');
 fputcsv($df, array_keys(reset($array)));
 foreach ($array as $row) {
 fputcsv($df, $row);
 }
 fclose($df);
 return ob_get_clean();
}
时间:原作者:0个回答

97 4

不确定 Excel,但是如果CSV字段被引用的话,LibreOffice和OpenOffice将以字符串形式导入字段。例如你希望你的CSV类似于:

foo,bar,"12345",baz

( 你可能还需要在file打开dialog中检查"将字段作为文本引用"选项。)

编辑:fputcsv() 函数的只能使用引号包装,因这里你可以能需要手动强制引号:

$field = 12345;
$quoted_field = '"'. $field. '"';

编辑 2: 如果你不需要担心转义,这可以能对你而言,而不是 fputcsv():

fwrite($fp, '"'. implode($fields, '","'). '"'."n");
原作者:
114 5

尝试在fputcsv之前将你的int强制转换为字符串。

例如

$foo ="$foo";

http://php.net/manual/en/language.types.type-juggling.php

但是在将CSV转换为Excel格式时,Excel可能会自己决定。

这个问题可能会有帮助:Excel CSV编号单元格格式

原作者:
54 2

将整数转换为字符串:- 字符串,strval或者单引号中的封闭值,甚至不能使用该变量。

我发现的唯一方法是添加一些字符或者符号以强制使它成为字符串,但也会显示出来。

原作者:
...