Salve, premetto che sono alle prime esperienze con scriptcase.
ho creato un applicazione di controllo per delle importazioni massive da xls,
tutto funziona regolarmente ad eccezione de campi data,
potete darmi indicazioni in merito ?
questo il codice usato
on onScriptInit
require_once('../../../..'.$this->Ini->path_prod.'/third/phpexcel/PHPExcel.php');
require_once('../../../..'.$this->Ini->path_prod.'/third/phpexcel/PHPExcel/IOFactory.php');
onValidateSuccess
$fileXlsX = explode('.',$this->xls_input_ul_name);
$tabella = {tabella};
if($fileXlsX[1]=='xlsx'){
//xlsx
$inputFileName = "../../../tmp/".$this->xls_input_ul_name;
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFileName);
$worksheetData = $objReader->listWorksheetInfo("../../../tmp/".$this->xls_input_ul_name);
$totalRows = $worksheetData[0]['totalRows'];
$totalColumns = $worksheetData[0]['totalColumns'];
$lastColumn = $objPHPExcel->getActiveSheet()->getHighestColumn();
$sheet = $objPHPExcel->getSheet(0);
$columnNames="";
$rowDate ="";
for($colum=0;$colum<$totalColumns;$colum++){
if($colum==$totalColumns-1){
$columnNames.= utf8_decode($objPHPExcel->getActiveSheet()->getCellByColumnAndRow($colum, 1)->getValue());
}else{
$columnNames.= utf8_decode($objPHPExcel->getActiveSheet()->getCellByColumnAndRow($colum, 1)->getValue()).",";
}
}
for ($row = 2; $row <= $totalRows; $row++){
for($colum=0;$colum<$totalColumns;$colum++){
if($colum==$totalColumns-1){
$rowDate .= "'".utf8_decode($objPHPExcel->getActiveSheet()->getCellByColumnAndRow($colum, $row)->getValue())."'";
}else{
$rowDate .= "'".utf8_decode($objPHPExcel->getActiveSheet()->getCellByColumnAndRow($colum, $row)->getValue())."',";
}
}
sc_exec_sql("INSERT INTO $tabella (".$columnNames.") VALUES (".$rowDate.")");
$rowDate="";
}
}else{
//xls
$objReader = new PHPExcel_Reader_Excel5();
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load("../../../tmp/".$this->xls_input_ul_name);
$worksheetData = $objReader->listWorksheetInfo("../../../tmp/".$this->xls_input_ul_name);
$totalRows = $worksheetData[0]['totalRows'];
$totalColumns = $worksheetData[0]['totalColumns'];
$lastColumn = $objPHPExcel->getActiveSheet()->getHighestColumn();
$sheet = $objPHPExcel->getSheet(0);
$columnNames="";
$rowDate ="";
for($colum=0;$colum<$totalColumns;$colum++){
if($colum==$totalColumns-1){
$columnNames.= utf8_decode($objPHPExcel->getActiveSheet()->getCellByColumnAndRow($colum, 1)->getValue());
}else{
$columnNames.= utf8_decode($objPHPExcel->getActiveSheet()->getCellByColumnAndRow($colum, 1)->getValue()).",";
}
}
for ($row = 2; $row <= $totalRows; $row++){
for($colum=0;$colum<$totalColumns;$colum++){
if($colum==$totalColumns-1){
$rowDate .= "'".utf8_decode($objPHPExcel->getActiveSheet()->getCellByColumnAndRow($colum, $row)->getValue())."'";
}else{
$rowDate .= "'".utf8_decode($objPHPExcel->getActiveSheet()->getCellByColumnAndRow($colum, $row)->getValue())."',";
}
}
sc_exec_sql("INSERT INTO $tabella (".$columnNames.") VALUES (".$rowDate.")");
$rowDate="";
}
}
sc_alert("Dati importati con successo");
import Excel
Regole del forum
Nel forum è vietato fare pubblicità senza avere l'autorizzazione dello staf di Netspecial.
Nel forum è vietato fare pubblicità senza avere l'autorizzazione dello staf di Netspecial.
import Excel
Ultima modifica di Maurizion il 09 apr 2019, 18:38, modificato 1 volta in totale.
Re: import Excel
Che tipo di errore si verifica? c'è un messaggio di errore?
Re: import Excel
se nel file di excel il formato data è il seguente 01/01/2018
mi restituisce errore sql
1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Chiamata,Data Apertura,Stato) VALUES ('0013517488','43242.656944444','Riassegnat' at line 1
ADOConnection._Execute(INSERT INTO scaricott (Numero Chiamata,Data Apertura,Stato) VALUES ('0013517488','43242.656944444','Riassegnato'), false) % line 1149, file: adodb.inc.php
ADOConnection.Execute(INSERT INTO scaricott (Numero Chiamata,Data Apertura,Stato) VALUES ('0013517488','43242.656944444','Riassegnato')) % line 1687, file: control_apl.php
control_apl.Valida_campos(null, null, null) % line 1086, file: control_apl.php
control_apl.controle() % line 1947, file: index.php
mentre se passo il file nel formato 2018-01-01 viene importato correttamente
Grazie
mi restituisce errore sql
1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Chiamata,Data Apertura,Stato) VALUES ('0013517488','43242.656944444','Riassegnat' at line 1
ADOConnection._Execute(INSERT INTO scaricott (Numero Chiamata,Data Apertura,Stato) VALUES ('0013517488','43242.656944444','Riassegnato'), false) % line 1149, file: adodb.inc.php
ADOConnection.Execute(INSERT INTO scaricott (Numero Chiamata,Data Apertura,Stato) VALUES ('0013517488','43242.656944444','Riassegnato')) % line 1687, file: control_apl.php
control_apl.Valida_campos(null, null, null) % line 1086, file: control_apl.php
control_apl.controle() % line 1947, file: index.php
mentre se passo il file nel formato 2018-01-01 viene importato correttamente
Grazie
Re: import Excel
Se il dato è memorizzato come data excel, di fatto è un numero, prova a convertire il valore con la funzione ExcelToPHP
non l'ho provata ma mi ero imbattuto anche io in un problema simile.$date = date('Y-m-d',PHPExcel_Shared_Date::ExcelToPHP($objWorksheet->getCellByColumnAndRow(1, $i)->getValue()));
Re: import Excel
prima di scrivere popola una variabile locale e converti il formato , puoi usare anche le macro sc cosi non ti preoccupi di vedere come è definito il db
Rino Lo Turco
Consulente Informatico; Analista e Sviluppatore; ex IT Manager; Cons. Direzionale di Organizzazione; Consulente Tecnico legale; Esperto protezione dati personali; Internet Service Provider
felice utente e fruitore di ScriptCase
Consulente Informatico; Analista e Sviluppatore; ex IT Manager; Cons. Direzionale di Organizzazione; Consulente Tecnico legale; Esperto protezione dati personali; Internet Service Provider
felice utente e fruitore di ScriptCase
Chi c’è in linea
Visitano il forum: Ahrefs [Bot] e 6 ospiti