-
pippuccio76
Senior Member
-
Posts: 507
Threads: 214
Joined: Jun 2017
Reputation:
2
12-19-2022, 02:32 AM
(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?
-
pippuccio76
Senior Member
-
Posts: 507
Threads: 214
Joined: Jun 2017
Reputation:
2
12-19-2022, 08:28 AM
(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
-
Mni.day
Junior Member
-
Posts: 25
Threads: 2
Joined: Dec 2022
Reputation:
0
|