417 lines
17 KiB
PHP
417 lines
17 KiB
PHP
<?php
|
|
/**
|
|
* Program inc_fx_excell.php.
|
|
* Usager: stephan
|
|
* Date : 14-09-05
|
|
* Time : 09:02
|
|
*/
|
|
function fxrapportexcellold($men_id, $strLangue)
|
|
{
|
|
global $objDatabase;
|
|
$mem_int_ligne_entete=3;
|
|
|
|
$intMenudecode = base64_decode(urldecode($men_id));
|
|
$tabResults = fxGetListData($men_id, '', '', 1, $strLangue);
|
|
|
|
// lire les entetes
|
|
$sqlentetes = "SELECT * from adm_forms f,adm_labels l where f.men_id=". $intMenudecode ." and l.men_id=". $intMenudecode ." and l.lab_code=f.for_field and l.lab_langue='".$strLangue."' and f.for_actif=1 and f.for_tri<>0 order by for_tri";
|
|
$tabentetes = $objDatabase->fxGetResults($sqlentetes);
|
|
|
|
// lire les données
|
|
$memexcfichier=$tabResults['menu']['mem_exc_fichier'];
|
|
$memexctitre=$tabResults['menu']['mem_exc_titre'];
|
|
$memdata=$tabResults['data'];
|
|
$memfields=$tabResults['fields'];
|
|
|
|
/** Error reporting */
|
|
error_reporting(E_ALL);
|
|
ini_set('display_errors', TRUE);
|
|
ini_set('display_startup_errors', TRUE);
|
|
|
|
define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />');
|
|
|
|
/** Include PHPExcel */
|
|
require_once dirname(__FILE__) . '/Classes/PHPExcel.php';
|
|
|
|
// Create new PHPExcel object
|
|
$objPHPExcel = new PHPExcel();
|
|
|
|
// Set document properties
|
|
// $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
|
|
// ->setLastModifiedBy("Maarten Balliauw")
|
|
// ->setTitle("PHPExcel Test Document")
|
|
// ->setSubject("PHPExcel Test Document")
|
|
// ->setDescription("Test document for PHPExcel, generated using PHP classes.")
|
|
// ->setKeywords("office PHPExcel php")
|
|
// ->setCategory("Test result file");
|
|
|
|
if (1 ==1) {
|
|
$sharedStyle1 = new PHPExcel_Style();
|
|
$sharedStyle1->applyFromArray(
|
|
array('fill' => array(
|
|
'type' => PHPExcel_Style_Fill::FILL_SOLID,
|
|
'color' => array('argb' => 'FF969696')
|
|
) ));
|
|
|
|
$sharedStyle2 = new PHPExcel_Style();
|
|
$sharedStyle2->applyFromArray(
|
|
array('fill' => array(
|
|
'type' => PHPExcel_Style_Fill::FILL_SOLID,
|
|
'color' => array('argb' => 'FFC0C0C0')
|
|
) ));
|
|
|
|
$sharedStyle3 = new PHPExcel_Style();
|
|
$sharedStyle3->applyFromArray(
|
|
array('fill' => array(
|
|
'type' => PHPExcel_Style_Fill::FILL_SOLID,
|
|
'color' => array('argb' => 'FFFFFF00')
|
|
) ));
|
|
|
|
// Add header
|
|
$c='A';
|
|
|
|
for ($intCtr2 = 1; $intCtr2 <= $tabResults['nb_fields']; $intCtr2++) {
|
|
$memtitre= $tabResults['fields'][$intCtr2]['lab_texte_list'] ;
|
|
$memwidth=$tabResults['fields'][$intCtr2]['for_exc_width'] ;
|
|
|
|
$objPHPExcel->getActiveSheet()->getColumnDimension($c)->setWidth($memwidth);
|
|
$objPHPExcel->getActiveSheet()->setCellValue($c.$mem_int_ligne_entete, ($memtitre));
|
|
$objPHPExcel->getActiveSheet()->getStyle($c.$mem_int_ligne_entete)->getFont()->setBold(true);
|
|
$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle2, $c.$mem_int_ligne_entete);
|
|
++$c;
|
|
}
|
|
|
|
if (1==1) {
|
|
// details
|
|
$mem_ligne = $mem_int_ligne_entete + 1;
|
|
$mem_debut_ligne = $mem_ligne;
|
|
// effacer les ligne endouble
|
|
$mem_avant = "";
|
|
$mem_skip = 0;
|
|
$mem_sup = 1;
|
|
|
|
for ($intCtr = 1; count($memdata) >= $intCtr; $intCtr++) {
|
|
// trouve le premier d'une série
|
|
if (trim($tabResults["menu"]["mem_ligne_double1"]) != '') {
|
|
if ($mem_avant != $tabResults['data'][$intCtr][$tabResults["menu"]["mem_ligne_double1"]]) {
|
|
$mem_avant = $tabResults['data'][$intCtr][$tabResults["menu"]["mem_ligne_double1"]];
|
|
$mem_skip = 0;
|
|
$mem_groupe1 = 1;
|
|
$mem_max_ligne = 1;
|
|
|
|
for ($intgroupe = 1; $intgroupe <= 5; $intgroupe++) {
|
|
$memgroupe = "groupe_" . $intgroupe;
|
|
$mem_count_groupe[$intgroupe] = 0;
|
|
|
|
if (isset($tabResults[$memgroupe]['data'][$mem_avant])) {
|
|
$mem_countmax_groupe[$intgroupe] = count($tabResults[$memgroupe]['data'][$mem_avant]);
|
|
$mem_count_groupe[$intgroupe] = 1;
|
|
} else
|
|
$mem_countmax_groupe[$intgroupe] = 0;
|
|
|
|
if ($mem_countmax_groupe[$intgroupe] > $mem_max_ligne)
|
|
$mem_max_ligne = $mem_countmax_groupe[$intgroupe];
|
|
}
|
|
|
|
} else {
|
|
$mem_skip = 1;
|
|
}
|
|
|
|
}
|
|
|
|
for ($mem_sup=1;$mem_sup<=$mem_max_ligne;$mem_sup++) {
|
|
echo($mem_sup);
|
|
|
|
$c = 'A';
|
|
|
|
for ($intCtr2 = 1; count($memfields) >= $intCtr2; $intCtr2++) {
|
|
$mem_result="";
|
|
$mem_champaffiche = 1;
|
|
// mettre la valeur dans une variable pour faire la gestion des groupe
|
|
$groupecourant = $tabResults['fields'][$intCtr2]['for_groupe'];
|
|
|
|
if ($groupecourant <> 0) {
|
|
// $mem_champaffiche=0;
|
|
|
|
$memgroupe = "groupe_" . $groupecourant;
|
|
if (isset($tabResults[$memgroupe]['data'][$mem_avant][$mem_sup][$tabResults['fields'][$intCtr2]['for_field']]))
|
|
$mem_result = $tabResults[$memgroupe]['data'][$mem_avant][$mem_sup][$tabResults['fields'][$intCtr2]['for_field']];
|
|
else{
|
|
$mem_champaffiche = 0;
|
|
$mem_result="";
|
|
}
|
|
} else {
|
|
if ($mem_sup > 1 && $tabResults['fields'][$intCtr2]['for_double'] <> 1)
|
|
{
|
|
$mem_champaffiche = 0;
|
|
$mem_result="";
|
|
}else
|
|
$mem_result = $tabResults['data'][$intCtr][$tabResults['fields'][$intCtr2]['for_field']];
|
|
}
|
|
|
|
// if ($mem_champaffiche == 1) {
|
|
$objPHPExcel->getActiveSheet()->setCellValue($c . $mem_ligne, ($mem_result));
|
|
$objPHPExcel->getActiveSheet()->getstyle($c . $mem_ligne)->getAlignment()->setHorizontal($tabResults['fields'][$intCtr2]['for_double']['for_align']);
|
|
// }
|
|
++$c;
|
|
}
|
|
|
|
$mem_ligne = $mem_ligne + 1;
|
|
}
|
|
}
|
|
|
|
$mem_fin_ligne = $mem_ligne - 1;
|
|
|
|
// total
|
|
$c = 'A';
|
|
|
|
for ($intCtr = 1; count($memfields) >= $intCtr; $intCtr++) {
|
|
if ($memfields[$intCtr]['for_somme'] == 1) {
|
|
$objPHPExcel->getActiveSheet()->setCellValue($c . $mem_ligne, ('tot'));
|
|
$objPHPExcel->getActiveSheet()->setCellValue($c . $mem_ligne, '=SUM(' . $c . $mem_debut_ligne . ':' . $c . $mem_fin_ligne . ')');
|
|
$objPHPExcel->getActiveSheet()->getstyle($c . $mem_ligne)->getAlignment()->setHorizontal($memfields[$intCtr]['for_align']);
|
|
$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle2, $c . $mem_ligne);
|
|
}
|
|
|
|
++$c;
|
|
}
|
|
|
|
$mem_ligne = $mem_ligne + 1;
|
|
}
|
|
}
|
|
|
|
$objPHPExcel->getActiveSheet()->setCellValue('A'.($mem_ligne+2),('Vous avez la responsabilité de vérifier l\'exactitude des données et des résultats du rapports.'));
|
|
$objPHPExcel->getActiveSheet()->setCellValue('A'.($mem_ligne+3),('Veuillez nous avisez de toutes irrégularités n\'étant pas causées par une saisie de donnée erronnée ou manquante le plus rapidement possible.'));
|
|
|
|
// Rename worksheet
|
|
$objPHPExcel->getActiveSheet()->setTitle($memexctitre);
|
|
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
|
|
$objPHPExcel->setActiveSheetIndex(0);
|
|
// Save Excel 2007 file
|
|
$mem_file_location= $_SERVER['DOCUMENT_ROOT'].'/data/'. $memexcfichier. '.xls';
|
|
$mem_file= $memexcfichier. '.xls';
|
|
$callStartTime = microtime(true);
|
|
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
|
|
$objWriter->save( $mem_file_location);
|
|
$callEndTime = microtime(true);
|
|
$callTime = $callEndTime - $callStartTime;
|
|
$memurl="?fl=".$mem_file_location."&f=".$mem_file;
|
|
|
|
header('location: ../php/download.php'.$memurl );
|
|
}
|
|
|
|
function fxrapportexcell($men_id, $strLangue, $strorder = '', $strwhere = '', $mem_actif = 1)
|
|
{
|
|
global $objDatabase;
|
|
$mem_int_ligne_entete = 1;
|
|
error_reporting(E_ALL);
|
|
//ini_set('display_errors', TRUE);
|
|
|
|
// ini_set('display_startup_errors', TRUE);
|
|
ini_set("memory_limit", "500M");
|
|
$intMenudecode = base64_decode(urldecode($men_id));
|
|
$tabResults = fxGetListData($men_id, $strorder, $strwhere, '', 1, $strLangue, "", $mem_actif);
|
|
|
|
// lire les entetes
|
|
$sqlentetes = "SELECT * FROM adm_forms f, adm_labels l WHERE f.men_id = " . $intMenudecode . " AND l.men_id = " . $intMenudecode . " AND l.lab_code = f.for_field AND l.lab_langue = '" . $strLangue . "' AND f.for_actif = 1 AND f.for_tri <> 0 ORDER BY for_tri";
|
|
$tabentetes = $objDatabase->fxGetResults($sqlentetes);
|
|
|
|
// lire les donnés
|
|
$memexcfichier = $tabResults['menu']['mem_exc_fichier'];
|
|
$memexctitre = $tabResults['menu']['mem_exc_titre'];
|
|
$memdata = $tabResults['data'];
|
|
$memfields = $tabResults['fields'];
|
|
|
|
|
|
define('EOL', (PHP_SAPI == 'cli') ? PHP_EOL : '<br />');
|
|
|
|
/** Include PHPExcel */
|
|
require_once dirname(__FILE__) . '/Classes/PHPExcel.php';
|
|
|
|
// Create new PHPExcel object
|
|
$objPHPExcel = new PHPExcel();
|
|
|
|
// Set document properties
|
|
|
|
// $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
|
|
// ->setLastModifiedBy("Maarten Balliauw")
|
|
// ->setTitle("PHPExcel Test Document")
|
|
// ->setSubject("PHPExcel Test Document")
|
|
// ->setDescription("Test document for PHPExcel, generated using PHP classes.")
|
|
// ->setKeywords("office PHPExcel php")
|
|
// ->setCategory("Test result file");
|
|
|
|
if (1 == 1) {
|
|
$sharedStyle1 = new PHPExcel_Style();
|
|
$sharedStyle1->applyFromArray(
|
|
array('fill' => array(
|
|
'type' => PHPExcel_Style_Fill::FILL_SOLID,
|
|
'color' => array('argb' => 'FF969696')
|
|
)));
|
|
|
|
$sharedStyle2 = new PHPExcel_Style();
|
|
$sharedStyle2->applyFromArray(
|
|
array('fill' => array(
|
|
'type' => PHPExcel_Style_Fill::FILL_SOLID,
|
|
'color' => array('argb' => 'FFC0C0C0')
|
|
)));
|
|
|
|
$sharedStyle3 = new PHPExcel_Style();
|
|
$sharedStyle3->applyFromArray(
|
|
array('fill' => array(
|
|
'type' => PHPExcel_Style_Fill::FILL_SOLID,
|
|
'color' => array('argb' => 'FFFFFF00')
|
|
)));
|
|
|
|
// Add header
|
|
$c = 'A';
|
|
|
|
for ($intCtr2 = 1; $intCtr2 <= $tabResults['nb_fields']; $intCtr2++) {
|
|
|
|
$memtitre = $tabResults['fields'][$intCtr2]['lab_texte_list'];
|
|
$memwidth = $tabResults['fields'][$intCtr2]['for_exc_width'];
|
|
|
|
$objPHPExcel->getActiveSheet()->getColumnDimension($c)->setWidth($memwidth);
|
|
$objPHPExcel->getActiveSheet()->setCellValue($c . $mem_int_ligne_entete, ($memtitre));
|
|
$objPHPExcel->getActiveSheet()->getStyle($c . $mem_int_ligne_entete)->getFont()->setBold(true);
|
|
$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle2, $c . $mem_int_ligne_entete);
|
|
++$c;
|
|
}
|
|
|
|
if (1 == 1) {
|
|
|
|
// details
|
|
$mem_ligne = $mem_int_ligne_entete + 1;
|
|
$mem_debut_ligne = $mem_ligne;
|
|
// effacer les ligne endouble
|
|
$mem_avant = "";
|
|
$mem_skip = 0;
|
|
|
|
$mem_sup = 1;
|
|
$mem_max_ligne = 1;
|
|
for ($intCtr = 1; count($memdata) >= $intCtr; $intCtr++) {
|
|
|
|
|
|
// trouve le premier d'une série
|
|
if (trim($tabResults["menu"]["mem_ligne_double1"]) != '') {
|
|
if ($mem_avant != $tabResults['data'][$intCtr][$tabResults["menu"]["mem_ligne_double1"]]) {
|
|
$mem_avant = $tabResults['data'][$intCtr][$tabResults["menu"]["mem_ligne_double1"]];
|
|
|
|
$mem_skip = 0;
|
|
$mem_groupe1 = 1;
|
|
$mem_max_ligne = 1;
|
|
for ($intgroupe = 1; $intgroupe <= 5; $intgroupe++) {
|
|
$memgroupe = "groupe_" . $intgroupe;
|
|
$mem_count_groupe[$intgroupe] = 0;
|
|
if (isset($tabResults[$memgroupe]['data'][$mem_avant])) {
|
|
$mem_countmax_groupe[$intgroupe] = count($tabResults[$memgroupe]['data'][$mem_avant]);
|
|
$mem_count_groupe[$intgroupe] = 1;
|
|
} else
|
|
|
|
$mem_countmax_groupe[$intgroupe] = 0;
|
|
|
|
if ($mem_countmax_groupe[$intgroupe] > $mem_max_ligne)
|
|
$mem_max_ligne = $mem_countmax_groupe[$intgroupe];
|
|
}
|
|
|
|
} else {
|
|
$mem_skip = 1;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
for ($mem_sup = 1; $mem_sup <= $mem_max_ligne; $mem_sup++) {
|
|
|
|
|
|
$c = 'A';
|
|
for ($intCtr2 = 1; count($memfields) >= $intCtr2; $intCtr2++) {
|
|
|
|
$mem_result = "";
|
|
$mem_champaffiche = 1;
|
|
// mettre la valeur dans une variable pour faire la gestion des groupe
|
|
|
|
$groupecourant = $tabResults['fields'][$intCtr2]['for_groupe'];
|
|
|
|
if ($groupecourant <> 0) {
|
|
// $mem_champaffiche=0;
|
|
|
|
$memgroupe = "groupe_" . $groupecourant;
|
|
if (isset($tabResults[$memgroupe]['data'][$mem_avant][$mem_sup][$tabResults['fields'][$intCtr2]['for_field']]))
|
|
$mem_result = $tabResults[$memgroupe]['data'][$mem_avant][$mem_sup][$tabResults['fields'][$intCtr2]['for_field']];
|
|
else {
|
|
$mem_champaffiche = 0;
|
|
$mem_result = "";
|
|
}
|
|
} else {
|
|
if ($mem_sup > 1 && $tabResults['fields'][$intCtr2]['for_double'] <> 1) {
|
|
$mem_champaffiche = 0;
|
|
$mem_result = "";
|
|
} else
|
|
$mem_result = $tabResults['data'][$intCtr][$tabResults['fields'][$intCtr2]['for_field']];
|
|
}
|
|
|
|
|
|
// if ($mem_champaffiche == 1) {
|
|
|
|
|
|
$objPHPExcel->getActiveSheet()->setCellValue($c . $mem_ligne, ($mem_result));
|
|
//$objPHPExcel->getActiveSheet()->getstyle($c . $mem_ligne)->getAlignment()->setHorizontal($tabResults['fields'][$intCtr2]['for_double']['for_align']);
|
|
$objPHPExcel->getActiveSheet()->getstyle($c . $mem_ligne)->getAlignment()->setHorizontal($tabResults['fields'][$intCtr2]['for_align']);
|
|
// }
|
|
++$c;
|
|
}
|
|
$mem_ligne = $mem_ligne + 1;
|
|
|
|
}
|
|
|
|
}
|
|
$mem_fin_ligne = $mem_ligne - 1;
|
|
// total
|
|
|
|
$c = 'A';
|
|
for ($intCtr = 1; count($memfields) >= $intCtr; $intCtr++) {
|
|
if ($memfields[$intCtr]['for_somme'] == 1) {
|
|
$objPHPExcel->getActiveSheet()->setCellValue($c . $mem_ligne, ('tot'));
|
|
$objPHPExcel->getActiveSheet()->setCellValue($c . $mem_ligne, '=SUM(' . $c . $mem_debut_ligne . ':' . $c . $mem_fin_ligne . ')');
|
|
$objPHPExcel->getActiveSheet()->getstyle($c . $mem_ligne)->getAlignment()->setHorizontal($memfields[$intCtr]['for_align']);
|
|
$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle2, $c . $mem_ligne);
|
|
}
|
|
++$c;
|
|
}
|
|
$mem_ligne = $mem_ligne + 1;
|
|
}
|
|
}
|
|
// $objPHPExcel->getActiveSheet()->setCellValue('A'.($mem_ligne+2),('Vous avez la responsabilité de vérifier l exactitude des données et des résultats du rapports.'));
|
|
// $objPHPExcel->getActiveSheet()->setCellValue('A'.($mem_ligne+3),('Veuillez nous avisez de toutes irrégularités n étant pas causées par une saisie de donnée erronnée ou manquante le plus rapidement possible.'));
|
|
|
|
|
|
// Rename worksheet
|
|
|
|
$objPHPExcel->getActiveSheet()->setTitle($memexctitre);
|
|
|
|
|
|
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
|
|
$objPHPExcel->setActiveSheetIndex(0);
|
|
|
|
// Save Excel 2007 file
|
|
$mem_file_location = $_SERVER['DOCUMENT_ROOT'] . '/data/' . $memexcfichier . '.xls';
|
|
$mem_file = $memexcfichier . '.xls';
|
|
|
|
|
|
$callStartTime = microtime(true);
|
|
|
|
|
|
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
|
|
$objWriter->save($mem_file_location);
|
|
$callEndTime = microtime(true);
|
|
$callTime = $callEndTime - $callStartTime;
|
|
|
|
|
|
$memurl = "?fl=" . $mem_file_location . "&f=" . $mem_file;
|
|
|
|
header('location: ../php/download.php' . $memurl);
|
|
|
|
|
|
}
|