Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1817 → Rev 1818

/trunk/jrest/services/ImportXLS.php
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