将从excel读取的科学数字转换为csv
Posted
技术标签:
【中文标题】将从excel读取的科学数字转换为csv【英文标题】:Converting scientific number read from excel into csv 【发布时间】:2017-07-21 00:12:01 【问题描述】:我在阅读 Excel 表格时遇到问题。我正在 csv 中获取科学格式的条形码值。
如何解析原始值而不是科学数字?
示例: 9,96E+12 [在 excel 中]
9960000000000 [我想要 CSV 格式]
我在 php 中使用 fgetcsv 函数来解析 csv 文件。
while (($row = fgetcsv($handle, 1000, ';')) !== FALSE)
if(!$header)
$header = $row;
else
$data[] = array_combine($header, $row);
我得到的输出:
[0] => Array
(
[code] => FJT8-thr-thrtC2-VSXL
[barcode] => 9960000000000
[amount] => 70
[status] => 1
)
我希望输出为
[0] => Array
(
[code] => FJT8-thr-thrtC2-VSXL
[barcode] => 9,96E+12
[amount] => 70
[status] => 1
)
【问题讨论】:
它们都是X,XXE+YY格式吗? 这篇文章可能有助于查看:***.com/questions/10916675/… @yanman1234 无法回复上传excel表格的用户。 【参考方案1】:只要将“,”转换为“.”,就可以使用floatval()和sprintf函数来回转换。在 PHP 中使用数字之前。
<?php
$start = '9,96E+12';
$str = floatval(str_replace(',','.',$start));
// Proof of concept
echo $start."<br />"; // starting off with 9,96E+12
echo $str."<br />"; // Converted number is 9960000000000
echo sprintf('%.2e',$str); // back to scientific number 9.96e+12
?>
【讨论】:
以上是关于将从excel读取的科学数字转换为csv的主要内容,如果未能解决你的问题,请参考以下文章
关于excel保存为csv格式后,重新打开文本型数字变为科学计数,且15位后面变成0??