200,6 → 200,7 |
} |
|
$objReader = PHPExcel_IOFactory::createReaderForFile($fichier); |
// TODO: check if compatible with toArray(<1>,<2>,TRUE,<4>) |
$objReader->setReadDataOnly(true); |
|
// TODO: is_a obsolete entre 5.0 et 5.3, retirer le @ à terme |
220,7 → 221,7 |
// XXX: indépendant du readFilter ? |
$nb_lignes = $obj_infos[0]['totalRows']; |
|
$donnees = $objPHPExcel->getActiveSheet()->toArray(NULL, FALSE, FALSE, TRUE); |
$donnees = $objPHPExcel->getActiveSheet()->toArray(NULL, FALSE, TRUE, TRUE); |
$filtre->exclues = self::detectionEntete($donnees[1]); |
|
$obs_ajouts = 0; |
244,9 → 245,18 |
/* recharge avec $filtre actif (filtre sur lignes colonnes): |
- exclue les colonnes inutiles/inutilisables) |
- ne selectionne que les lignes dans le range [$ligne - $ligne + NB_LIRE_LIGNE_SIMUL] */ |
$objPHPExcel = $objReader->load($fichier); |
$donnees = $objPHPExcel->getActiveSheet()->toArray(NULL, FALSE, FALSE, TRUE); |
$objPHPExcel = $objReader->load($fichier)->getActiveSheet(); |
|
// set col typing |
if(C_CE_ZONE_GEO != 'C_CE_ZONE_GEO') |
$objPHPExcel->getStyle(C_CE_ZONE_GEO . '2:' . C_CE_ZONE_GEO . $objPHPExcel->getHighestRow())->getNumberFormat()->setFormatCode('00000'); |
|
// TODO: set to string type |
if(C_ZONE_GEO != 'C_ZONE_GEO') |
$objPHPExcel->getStyle(C_ZONE_GEO . '2:' . C_ZONE_GEO . $objPHPExcel->getHighestRow())->getNumberFormat()->setFormatCode('00000'); |
|
$donnees = $objPHPExcel->toArray(NULL, FALSE, TRUE, TRUE); |
|
// ici on appel la fonction qui fera effectivement l'insertion multiple |
// à partir des (au plus) NB_LIRE_LIGNE_SIMUL lignes |
|
580,6 → 590,7 |
// TODO: passer par le timestamp pour s'assurer de la validité |
static function traiterDateObs($date, $ref_ligne) { |
// TODO: see https://github.com/PHPOffice/PHPExcel/issues/208 |
// TODO: PHPExcel_Shared_Date::ExcelToPHP() |
if(is_double($date)) { |
if($date > 0) |
return PHPExcel_Style_NumberFormat::toFormattedString($date, PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2) . " 00:00:00"; |
798,14 → 809,20 |
return; |
} |
|
|
if(!is_numeric($departement)) { |
$localisation[C_CE_ZONE_GEO] = $ligne[C_CE_ZONE_GEO]; |
return; |
} |
|
if(strlen($departement) == 4) $departement = "INSEE-C:0" . $departement; |
if(strlen($departement) == 5) $departement = "INSEE-C:" . $departement; |
if( ($resultat_commune = Cel::db()->requeter(sprintf("SELECT DISTINCT nom, CONCAT('INSEE-C:', code) AS code FROM cel_zones_geo WHERE code = %s LIMIT 1", |
self::quoteNonNull($departement)))) ) { |
$localisation[C_ZONE_GEO] = $resultat_commune[0]['nom']; |
$localisation[C_CE_ZONE_GEO] = $resultat_commune[0]['code']; |
return; |
} |
; |
// if(strlen($departement) == 4) $departement = "INSEE-C:0" . $departement; |
// if(strlen($departement) == 5) $departement = "INSEE-C:" . $departement; |
// if(strlen($departement) <= 9) return "INSEE-C:0" . $departement; // ? ... TODO |
|
$departement = trim($departement); // TODO |
815,7 → 832,7 |
} |
|
|
$select = "SELECT DISTINCT nom, code FROM cel_zones_geo"; |
$select = "SELECT DISTINCT nom, code FROM cel_zones_geo"; |
|
if (preg_match('/(.+) \((\d{1,5})\)/', $identifiant_commune, $elements)) { |
// commune + departement : montpellier (34) |
831,7 → 848,6 |
$select, self::quoteNonNull($nom_commune), |
$code_commune); |
} |
|
} |
elseif (preg_match('/^(\d+|(2[ab]\d+))$/i', $identifiant_commune, $elements)) { |
// Code insee seul |