PHPexcel删除前导零的麻烦

I have the code below but when I run my CSV though the import process my leading zeros are gone. For example, I have a field with a number such as "0010" but after it comes from the below code the number is "10". Anybody have a suggestion?

    $objPHPExcel = new PHPExcel();
    
    function ci_import($inputFileName){
        
            //echo "calling....";exit;
            
        try {
            $inputFileType = PHPExcel_IOFactory::identify($inputFileName);
            $objReader = PHPExcel_IOFactory::createReader($inputFileType);
            $objPHPExcel = $objReader->load($inputFileName);
        } catch (Exception $e) {
            die('Error loading file "' . pathinfo($inputFileName, PATHINFO_BASENAME) 
            . '": ' . $e->getMessage());
        }
        
        $sheets = count($objPHPExcel->getAllSheets());
        //echo $sheets;
        //echo "<pre>";
        $arr=array();
        foreach($objPHPExcel->getAllSheets() as $sheet){
            $title = $sheet->getTitle();
            $arr[$title]=array();
            $rows= array();
            // fetch the data
            foreach ($sheet->getRowIterator() as $row) 
            {
                $cols= array();
                $cellIterator = $row->getCellIterator();
                $cellIterator->setIterateOnlyExistingCells(false); // This loops all cells,
                foreach ($cellIterator as $cell)
                {
                    $cols[]=$cell->getValue();
                }
                $rows[] = $cols;
            }
            $arr[$title]=$rows;
            
            
                    }
        
        return $arr;
        print_r( $arr);
        
    }

</div>

Numbers don't have leading zeroes; but PHPExcel's CSV Reader will recognise that the value 0010 is numeric and convert it to a number 10, which is perfectly correct, and (just for reference) is exactly what the MS Excel CSV Reader does.

If you want to treat this value as a string, or to format it as a 4-digit number with leading zeroes, then you want to create a custom binder that specifies this as a rule for importing the value.

class PHPExcel_Cell_MyValueBinder extends PHPExcel_Cell_DefaultValueBinder
    implements PHPExcel_Cell_IValueBinder 
{ 
    public function bindValue(PHPExcel_Cell $cell, $value = null) 
    { 
        // sanitize UTF-8 strings 
        if (is_string($value)) { 
            $value = PHPExcel_Shared_String::SanitizeUTF8($value); 
        } 

        // Implement your own override logic 
        if (is_string($value) && $value[0] == '0') { 
            // Here, we're just enforcing that the value should be treated
            //   as a string, but we could convert it to a numeric and apply
            //   a format mask to the cell instead
            $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_STRING); 
            return true; 
        } 

        // Not bound yet? Use default value parent... 
        return parent::bindValue($cell, $value); 
    } 
} 

To avoid any problems with the autoloader, create this in the /Classes/PHPExcel/Cell directory. Otherwise, give the class your own non-PHPExcel name, and ensure that it's loaded independently.

Then, before loading the file, indicate that your custom binder should be used:

PHPExcel_Cell::setValueBinder( new PHPExcel_Cell_MyValueBinder() );