php生成csv时科学计数法,关于csv:PHP fputcsv以科学记数法在excel中显示长整数

我有一个简单的脚本,可将数据库中的数据输出到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无法做到这一点,因为csv绝对无法指示字段的格式。 如果要将"大"数字视为文本,则可能应该考虑使用excel库生成本机.xls文件,在该文件中您可以强制将大数字视为文本。

将文件导入excel,然后可以在其中定义字段属性。 问题更多与excel如何默认CSV导入有关。

我喜欢PHPExcel来生成带有格式化单元格的xls文件。 这个SO线程还有更多建议:stackoverflow.com/questions/3133357/

我不得不处理这种事情一次。

虽然它不是很优雅,也不是纯CSV。

我所知道的迫使Excel从csv源强制转换值的唯一方法是使用"公式"作为csv数据中的值。

因此...强制excel将数字解释为可以使用的文本:

....,'=" =" 5551212"',...

CSV使用分隔符分隔列数据。没有针对特定数据类型的格式化选项。问题在于Excel会自动默认设置数据类型。手动导入CSV时,您需要覆盖此设置。

为此,请执行以下操作:对于所有CSV,可以通过转到Data -> Get External Data from Text,然后选择Delimited项目符号点,选中My data has headers,单击Next,然后在Comma字段中将所有数据作为文本导入。在Delimiters列下,单击Next,并且-这是关键-高亮显示数据预览中的所有列,然后在Finish之前在Column data format下选择Text。

这将允许将所有CSV文件作为文本导入,并解决所有前导和尾随0问题,所有科学计数法问题,并确保在与另一个文本字段进行直接比较时,每个VLOOKUP都匹配。

是的,我知道我可以在Excel中更改设置,更多是在寻找文件本身的解决方案。 可能必须查看库以生成.xls。 感谢您的答复。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值