PHP fputcsv在Excel中以科学计数形式显示长整数

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

我有一个简单的脚本,可将数据库中的数据输出到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));
php csv fputcsv
3个回答
1
投票

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都匹配。


1
投票

我不得不处理这种事情一次。虽然它不是很优雅,也不是纯CSV。我所知道的迫使Excel从csv源强制转换值的唯一方法是使用“公式”作为csv数据中的值。


0
投票

我遇到了相同的问题,并且已经按照以下方法解决了。我已经为每个数组值插入了单引号。这样,当您使用excel打开csv文件时,科学记号E + 15将不再显示。

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