Excel CSV数字转换为PHP的普通字符串

Excel CSV数字转换为PHP的普通字符串,php,excel,csv,numbers,Php,Excel,Csv,Numbers,我正在开发一个导入模块,管理员可以从CSV文件导入客户信息行(包括客户ID号,它是一个13位数字值) 问题在于,如果值为888888 1111088,Excel会将数字转换为8.888 E+12,我需要验证该数字(即使是字符串)以匹配回数据库中的前一个条目) 不幸的是,我不能依靠管理员将Excel中的这些条目转换为字符串,因此我正在寻找一种在PHP中将不正确的值转换为13位数字/字符串的方法 如有任何建议,将不胜感激 以下是我正在使用的脚本示例: <?php // $data cont

我正在开发一个导入模块,管理员可以从CSV文件导入客户信息行(包括客户ID号,它是一个13位数字值)

问题在于,如果值为888888 1111088,Excel会将数字转换为8.888 E+12,我需要验证该数字(即使是字符串)以匹配回数据库中的前一个条目)

不幸的是,我不能依靠管理员将Excel中的这些条目转换为字符串,因此我正在寻找一种在PHP中将不正确的值转换为13位数字/字符串的方法

如有任何建议,将不胜感激

以下是我正在使用的脚本示例:

 <?php
 // $data contains the rows returned from the CSV file:
 foreach ($data AS $k => $v) {
      /* $v['id_number'] is 8.88888E+12 but in the database it's stored correctly
       * as 888888111088. I need to match the imported value from the CSV to the row
       * in the database.
       * 
       * I need to convert 8.88888E+12 back to 888888111088.
       */
      if (strlen(str_replace(" ", "", $v['id_number'])) != 13) {
            $this->importValidateRules[$k] = "The ID number (" . $v['id_number'] . ") is invalid. It must be 13 characters long.";
      }
      // Continue with model validation:
 }
 ?>

通常,将“登录”单元格置于数字之前可以强制Excel将该值用作文本。如果您可以在保存到csv之前操作原始xls或要求用户执行此操作,则会起作用{例如,在B1单元中有一个新列并将其放入B1单元=连接(“,A1)}

从csv+php中“计算”将不起作用(精度已经丢失)。

如果错误地将其保存为csv,则无法完成此操作。在记事本中打开它,查看它在平面文件中的表示方式。如果是xls或xlsx文件,则可以获得原始值。但是没有一次错误地保存在csv中。@RobbieChiha谢谢你的反馈,我也这么想:(在Excel中使用字段类型,然后尝试重新导出到CSV。您也可以尝试使用
PHPExcel
,效果非常好。@MauritzSwanepoel,如果您想了解它的数学运算:8.8888e+12=8.88888*10^12=888880000000,它不会转换回完整的数字。唯一的方法是在保存之前在Excel中有一个文本字段。感谢您的帮助。)反馈。多亏了Excel哈哈,我已经正式失去了5个小时的生命。不幸的是,我必须在代码中做验证,因为我不能依靠客户端在时间之前操作数据。我将在这里看看phpExcel作为答案!