Welcome Guest, Not a member yet? Register   Sign In
Extract data from excel error remove zero to last digit
#1

(This post was last modified: 12-19-2022, 02:58 AM by pippuccio76.)

HI i have a problem to extract data from a file excel , when i try to insert data to db and  the last digit  is zero is removed.
I try to debug with this code :
Code:
  //DEBUG
  if ($row[3]=='5.120') {
       echo 'Controllo_zero_finale:'.$row[3];
       die();
 }

but the echo is Controllo_zero_finale:5.12 


I see if i insert in the if === there are not value . So it mean that value from excel are casting to float when extract .

i use this class to manage excel :

Code:
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpSpreadsheet\Style\Color;

 Why zero is removed ? how can i prevent?
Reply
#2

Try to use getFormattedValue() instead of getValue()
Reply
#3

(This post was last modified: 12-19-2022, 08:28 AM by pippuccio76.)

(12-19-2022, 06:43 AM)Mni.day Wrote: Try to use getFormattedValue() instead of getValue()

i dont use getValue or getFormattedValue , this is my code :


Code:
    public function inserisciRecordExcel(){

        $data=[];

        $sap_dati_ricevuti_model = new Sap_dati_ricevutiModel();

        if($this->request->getMethod() === 'post')
        { 
            //DEBUG
            // print_r($_POST);
            // die();

            $validation =  \Config\Services::validation();

            $rules=
                    [
                        'file_excel'=>  [     
                                        'label'=>'file_excel',
                                        'rules'=>'uploaded[file_excel]|max_size[file_excel,4024]|ext_in[file_excel,xls,csv,xlsx]',
                                        'errors'=>[
                                                    'ext_in'=>'Estensione file non corretta puoi caricare solamente file con estensione xls',
                                                    'max_size'=>'File  troppo pesante',
                                                   
                                                  ]
                                        ],

                    ];

            if($this->validate($rules)){



                //echo 'validati';
                //die();

                //carico la classe che gestisce excel
                $spreadsheet = new Spreadsheet();

                //recupero le informazioni del file
                $file_excel = $this->request->getFile('file_excel');

                //DEBUG
               
                //print_r($_POST);

                //echo $file_excel->getName();

                //exit();
               

                //se non presente la diectory0
                if(!is_dir(WRITEPATH . '/file_excel')){

                    //la creo
                    mkdir(WRITEPATH.'/file_excel');
                }


                //path per trasferire il file
                $path_file = WRITEPATH . '/file_excel/';


                //DEBUG
                // echo $path_file;
                // die();

                $estensione =$file_excel->guessExtension() ;


                //lo trasferisco nella cartella uploaded con nome excel_rubrica_{id_centri}
                if($file_excel->move($path_file,'excel_codici.'.$estensione,true)){

                    $file = new \CodeIgniter\Files\File($path_file.'excel_codici.'.$estensione);

                    //DEBUG
                    //echo $estensione;
                    //die();

                    if('csv' == $estensione){

                        $reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
                   
                    }elseif('xlsx' == $estensione) {
                       
                        $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
                   
                    }elseif('xls' == $estensione) {
                       
                        $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls();
                    }


                    $foglio_calcolo =$reader->load($file);

                    $dati = $foglio_calcolo->getActiveSheet()->toArray();

                    //creo una variabile per contare i record inseriti
                    $record_inseriti = 0 ;
                    //creo una variabile per gli errori
                    $errori_inserimento = 0 ;
                    //creo una variabile per i duplicati
                    $duplicati = 0 ;

                    //svuoto la tabella
                    if(!$sap_dati_ricevuti_model->svuota_tabella()){


                        $data['messaggi_errore'] = 'Impossibile svuotare la tabella'  ;

                        $data ['redirect'] =base_url().'/admin';

                        echo view('common/messaggi_errore',$data );   

                        die();

                    };


                    //DEBUG
                    //print_r($dati);
                    //die();
                   
                    //VARIABILE PER SALTARE LA PRIMA RIGA
                    $numero_riga_excel=0;

                    foreach($dati as $row){

                        if($numero_riga_excel)
                        {

                            if($row[0]){
                               
                                $numero_corretto = str_replace('.', '', $row[7])  ;
                                $numero_corretto = str_replace(',', '.', $numero_corretto)  ;
                                $numero_corretto = floatval($numero_corretto);
                               
                                $valore_totale_sap = $numero_corretto;
                               


                                $numero_corretto = str_replace('.', '', $row[15])  ;
                                $numero_corretto = str_replace(',', '.', $numero_corretto)  ;
                                $numero_corretto = floatval($numero_corretto);

                                $valore_totale_qualita = $numero_corretto;


                                $numero_corretto = str_replace('.', '', $row[5])  ;
                                $numero_corretto = str_replace(',', '.', $numero_corretto)  ;
                                $numero_corretto = floatval($numero_corretto);

                                $quantita_sap = $numero_corretto;



                                $numero_corretto = str_replace('.', '', $row[14])  ;
                                $numero_corretto = str_replace(',', '.', $numero_corretto)  ;
                                $numero_corretto = floatval($numero_corretto);

                                $quantita_controllo_qualita = $numero_corretto;

                                $numero_corretto = str_replace('.', '', $row[15])  ;
                                $numero_corretto = str_replace(',', '.', $numero_corretto)  ;
                                $numero_corretto = floatval($numero_corretto);

                                $valore_totale_qualita = $numero_corretto;

                               

                                /*
                                if($row[7]){
                                   
                                    $valore_totale_sap =$row[7];
                               
                                }else{

                                    $valore_totale_sap =0;

                                }
                                $valore_totale_qualita =$row[15];
                                $quantita_sap =$row[5];
                                $quantita_controllo_qualita =$row[14];
                                */
       
                                //DEBUG
                                //echo $quantita_sap;
                                //die();

                            }

                            //echo $valore_totale_sap.'-'.$quantita_sap;
                            //die();
                            #################################################################################################

                           

                            if($row[0]){

                                if($row[5]){

                                    $valore_singolo_sap = floatval(($valore_totale_sap+$valore_totale_qualita)/($quantita_sap+$quantita_controllo_qualita));
                               
                                }else{

                                    $valore_singolo_sap = 0 ;
                                }


                                if ($row[1]) {
                                   
                                    $magazzino = $row[1];
                               
                                }else{

                                    $magazzino = 'FE';
                                }

                                //DEBUG
                               
                                //if ((string)$row[3]==='5.120') {
                                //    echo 'Controllo_zero_finale:'.$row[3];
                                //    die();
                                //}
                               

                                $dati_to_insert =  [ 
                                                       
                                                     
                                                        'magazzino'=> $magazzino,
                                                        'definizione_magazzino'=>$row[2],
                                                        'codice_materiale'=>(string)$row[3],
                                                        'testo_breve_materiale'=>$row[4],
                                                        'quantita_sap'=>$quantita_sap,
                                                        'unita_misura'=>$row[6],
                                                        'valore_totale_sap'=>$valore_totale_sap,
                                                        'valore_singolo_sap'=>$valore_singolo_sap,
                                                        'divisa'=>$row[8],
                                                        'quantita_totale_qualita_sap'=>$row[14],
                                                        'fornitori_conto_lavoro'=>$row[11]


                                                    ];

                                $res=$sap_dati_ricevuti_model->insert($dati_to_insert);


                                if($res){
                                   
                                    $record_inseriti++;
                               
                                }else{
                               
                                    $errori_inserimento++ ;
                               
                                }


                            }//end if($row[0])

                           

                            //echo $valore_totale_sap.'|'.  $valore_totale_qualita .'|'. $quantita_sap  .'|'. $quantita_controllo_qualita. '<br>';


                        }// END if($numero_riga_excel)


                        //VARIABILE PER SALTARE LA PRIMA RIGA
                        $numero_riga_excel++;

                 

                       
                    }//end foreach($dati as $row)



                    //die();

                    if($errori_inserimento == 0) {

                        $data['messaggi_ok'] = 'Record inseriti ' . $record_inseriti  . '  Duplicati '. $duplicati  ;

                        $data ['redirect'] =base_url().'/admin_Sap_dati_ricevuti/lista_completa';

                        echo view('common/messaggi_ok',$data );                 
                       
                    }else{

                        $data['messaggi_errore'] = 'Record inseriti ' . $record_inseriti .' Problemi inserimento '.  $errori_inserimento . '  Duplicati '. $duplicati  ;

                        $data ['redirect'] =base_url().'/admin';

                        echo view('common/messaggi_errore',$data );   

                    }
                             

                }else{

                    $data['validation'] = $validation;



                }
            }

        }



      if (!isset($data['messaggi_errore']) AND !isset($data['messaggi_ok'])) {

        echo view('empty_view',$data);
        echo view('admin/sap_dati_ricevuti/inserisciRecordExcel');

      }



    }//inserisciRecordExcel
     
Reply
Reply




Theme © iAndrew 2016 - Forum software by © MyBB