我有一个简单的脚本,可将数据库中的数据输出到CSV文件。
我的问题是,当我导出手机号码时,excel将它们视为长整数,并以科学计数法显示它们。
如果我格式化单元格并将其更改为数字,它们都将显示正常。
是否有一种方法可以将列设置为整数而不在excel中更改它。
这是我的代码:
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=data.csv');
$output = fopen('php://output', 'w');
fputcsv($output, array('Book Reference','Company','Type','Site Name', 'Date', 'Time', 'Name', 'Email', 'Mobile', 'Team ID'));
下面是while循环中的代码
// THIS IS WHERE I SET VARIABLES
fputcsv($output, array($booking_reference,$company,$type,$site_name,$date,$time,$name,$email,$mobile,$team_id));
CSV使用分隔符分隔列数据。没有针对特定数据类型的格式化选项。问题在于Excel会自动默认设置数据类型。手动导入CSV时,您需要覆盖此设置。
[为此:对于所有CSV,可以通过以下方式将所有数据作为文本导入:Data -> Get External Data from Text
,然后选择Delimited
项目符号点,选中My data has headers
,单击Next
,然后在[在Comma
列下单击C0,然后单击Delimiters
,这是关键,突出显示数据预览中的所有列,然后在单击Next
之前在Text
下选择Column data format
。 >
[这将允许所有CSV文件作为文本导入,并解决所有前导和尾随0问题,所有科学计数法问题,并确保在与另一个文本字段直接比较时,每个VLOOKUP都匹配。
我不得不处理这种事情一次。虽然它不是很优雅,也不是纯CSV。我所知道的迫使Excel从csv源强制转换值的唯一方法是使用“公式”作为csv数据中的值。
我遇到了相同的问题,并且已经按照以下方法解决了。我已经为每个数组值插入了单引号。这样,当您使用excel打开csv文件时,科学记号E + 15将不再显示。