20,7 → 20,7 |
|
set_include_path(get_include_path() . PATH_SEPARATOR . dirname(dirname(realpath(__FILE__))) . '/lib'); |
// la sortie est binaire (xls), mais OLE n'est pas compatible E_ALL en PHP-5.4 |
//error_reporting(error_reporting() ^ E_STRICT); |
error_reporting(error_reporting() ^ E_STRICT); |
require_once("lib/OLE.php"); |
require_once("lib/Spreadsheet/Excel/Writer.php"); |
|
225,25 → 225,23 |
{ |
$chemin_temp = "php://temp"; |
$outstream = fopen($chemin_temp, 'r+'); |
$intitule_champs = array(); |
$nb_colonnes_supp = count($colonnes_supplementaires); |
|
$groupe_colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($colonnes); |
foreach($data as &$ligne) { |
$id_obs = $ligne['id_observation']; |
$ligne = $this->filtrerDonneesSensibles($ligne); |
$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $groupe_colonnes, $this); |
$ligne_supp = $nb_colonnes_supp > 0 ? array_fill(0, $nb_colonnes_supp, '') : array(); |
if(isset($champs_supplementaires[$id_obs])) { |
$ligne_supp = $this->traiterLigneEtendue($colonnes_supplementaires, $champs_supplementaires[$id_obs]); |
} |
$ligne += $ligne_supp; |
if(empty($intitule_champs)) { |
$intitule_champs = FormateurGroupeColonne::getIntitulesColonnes($groupe_colonnes); |
|
foreach($colonnes_supplementaires as $colonne_sup) { |
$intitule_champs[] = $colonne_sup; |
} |
|
// header |
fputcsv($outstream, $intitule_champs, ',', '"'); |
} |
// lignes |
foreach($data as &$ligne) { |
$id_obs = $ligne['id_observation']; |
$ligne = $this->filtrerDonneesSensibles($ligne); |
$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $groupe_colonnes, $this); |
$ligne_etendue_aplatie = self::aplatirChampsEtendus($champs_supplementaires[$id_obs]); |
self::traiterLigneEtendue($ligne, $colonnes_supplementaires, $ligne_etendue_aplatie); |
fputcsv($outstream, $ligne, ',', '"'); |
} |
rewind($outstream); |
256,8 → 254,6 |
$this->extendSpreadsheetProductor = new SpreadsheetProductor(); |
$this->extendSpreadsheetProductor->initSpreadsheet(); |
|
$nb_colonnes_supp = count($colonnes_supplementaires); |
|
$workbook = new Spreadsheet_Excel_Writer(); |
$worksheet = $workbook->addWorksheet('Liste'); |
$workbook->setTempDir($this->config['cel']['chemin_stockage_temp']); |
268,27 → 264,25 |
|
$nb_lignes = 1; |
$groupe_colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($colonnes); |
foreach($data as &$ligne) { |
$id_obs = $ligne['id_observation']; |
$ligne = $this->filtrerDonneesSensibles($ligne); |
$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $groupe_colonnes, $this); |
if(empty($intitule_champs)) { |
$indice = 0; |
$intitule_champs = FormateurGroupeColonne::getIntitulesColonnes($groupe_colonnes); |
foreach($colonnes_supplementaires as $colonne_sup) { |
$intitule_champs[] = $colonne_sup; |
} |
|
// header |
$indice = 0; |
foreach ($intitule_champs as &$intitule) { |
$colonne = $intitule_champs[$indice]; |
$worksheet->write(0,$indice,$colonne); |
$worksheet->write(0,$indice,$intitule); |
$indice++; |
} |
} |
$ligne_supp = $nb_colonnes_supp > 0 ? array_fill(0, $nb_colonnes_supp, '') : array(); |
if(isset($champs_supplementaires[$id_obs])) { |
$ligne_supp = $this->traiterLigneEtendue($colonnes_supplementaires, $champs_supplementaires[$id_obs]); |
} |
$ligne += $ligne_supp; |
|
foreach($data as &$ligne) { |
$id_obs = $ligne['id_observation']; |
$ligne = $this->filtrerDonneesSensibles($ligne); |
$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $groupe_colonnes, $this); |
|
$ligne_etendue_aplatie = self::aplatirChampsEtendus($champs_supplementaires[$id_obs]); |
$ligne_supp = self::traiterLigneEtendue($ligne, $colonnes_supplementaires, $ligne_etendue_aplatie); |
$indice = 0; |
foreach($ligne as &$champ) { |
$worksheet->write($nb_lignes,$indice,$champ); |
312,9 → 306,14 |
exit;; |
} |
|
private function traiterLigneEtendue(&$colonnes_etendues, &$ligne_champs_etendus) { |
$ligne_etendue_aplatie = $this->aplatirChampsEtendus($ligne_champs_etendus); |
static function traiterLigneEtendue(&$ligne, &$colonnes_etendues, $ligne_etendue_aplatie) { |
if(! $colonnes_etendues) return; |
if(! $ligne_etendue_aplatie) return; |
$nb_colonnes_supp = count($colonnes_etendues); |
|
$ligne_supp = array_fill(0, $nb_colonnes_supp, ''); |
$ligne_etendue_fmt = array(); |
|
foreach($colonnes_etendues as $colonne) { |
if(!isset($ligne_etendue_aplatie[$colonne])) { |
$ligne_etendue_fmt[$colonne] = ''; |
322,10 → 321,12 |
$ligne_etendue_fmt[$colonne] = $ligne_etendue_aplatie[$colonne]; |
} |
} |
return $ligne_etendue_fmt; |
|
$ligne += $ligne_etendue_fmt; |
} |
|
private function aplatirChampsEtendus(&$ligne_champs_etendus) { |
static function aplatirChampsEtendus(&$ligne_champs_etendus) { |
if(!$ligne_champs_etendus) return; |
$champs_etendus_fmt = array(); |
foreach($ligne_champs_etendus as $champ) { |
$champs_etendus_fmt[$champ->cle] = $champ->valeur; |