代码之家  ›  专栏  ›  技术社区  ›  Arie Pratama

如何在Laravel Excel maatwebsite上导入时获取实数?

  •  3
  • Arie Pratama  · 技术社区  · 7 年前

    我希望在导入文件时将数字作为实际值,例如:

    打开csv时,单元格值:1986100120090111005

    但当我使用Laravel Excel导入时,它的格式将为1.986100120090111E+17

    如何获得数字的真实值(1986100120090111005)? 我尝试了bellow代码,但没有成功

    $data['excel'] = Excel::load($path, function ($reader) {
              $reader->sheet(0, function ($sheet) {
                  $sheet->setColumnFormat(["A" => "@"]);
              });
          })->toArray();
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   Dharma Saputra    7 年前

    实际上,你得到的值是真的。 1.98610012009011E+17 是指数值的形式。但如果你想得到它 string 试试这种方法。

    您应该创建 ValueBinder

    // MyValueBinderClass
    use PHPExcel_Cell;
    use PHPExcel_Cell_DataType;
    use PHPExcel_Cell_IValueBinder;
    use PHPExcel_Cell_DefaultValueBinder;
    
    class MyValueBinder extends PHPExcel_Cell_DefaultValueBinder implements PHPExcel_Cell_IValueBinder
    {
        public function bindValue(PHPExcel_Cell $cell, $value = null)
        {
    
            if (is_numeric($value))
            {
                $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_STRING);
    
                return true;
            }
    
            // else return default behavior
            return parent::bindValue($cell, $value);
        }
    }
    

    然后在加载csv文件时将其绑定到:

    $myValueBinder = new MyValueBinder;
    $data = Excel::setValueBinder($myValueBinder)
        ->load($path)->toArray();
    

    参考号: http://www.maatwebsite.nl/laravel-excel/docs/import#formatting

        2
  •  1
  •   Mahdi Younesi    7 年前

    它超出整数类型的范围。

    使用 一串 对于DB中的列类型

    或者投下它

     $number=  (float) $value;;
    
    推荐文章