Bonjour, ci-joint le code que j'utilise il fonctionne correctement
sauf pour les alignements et les bordures j'ai essayé beaucoup de solutions aucune fonctionne
si quelqu'un a une piste
Merci
<?php
include("_connexion.php");


include 'PHPExcel.php';
include 'PHPExcel/Writer/Excel5.php';
$workbook= new PHPExcel;
$sheet = $workbook->getActiveSheet();

//orientation paysage
$sheet->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);
//format de page
$sheet->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup:APERSIZE_A4);
$sheet->getPageSetup()->setFitToWidth(1); // mise en page ajustement 1 page en largeur
$sheet->getPageSetup()->setFitToHeight(10);// pour 10 pages en hauteur
$sheet->getPageMargins()->SetLeft(0.2); // marge gauche 0.5
$sheet->getPageMargins()->SetRight(0.2); //marge droite 0.5
$sheet->getPageMargins()->SetBottom(1); //marge droite 0.5

//entete de page
$sheet->getHeaderFooter()->setOddHeader('FACTURATION Date : &D a &T');
//pied de page
$sheet->getHeaderFooter()->setOddFooter('&Rpage &P de &N');


//alignement à l'interieur des cellules
$stylealign=$sheet->getStyle('B4');
$stylealign->applyfromarray(array('alignment'=>array('vertical'=>PHPExcel_Style_Alignment::VERTICAL_CENTER)));


//encadrement des cellules
$stylbordure=$sheet->getStyle('A3');
$stylbordure->getBorders()->applyFromArray(array('allborders' => array('style'=>PHPExcel_style_border::BORDER_THIN,'color' => array('rgb' => '808080'))));

//largeur colonnes spécifiques
$sheet->getColumnDimension('A')->setWidth(15);
$sheet->getColumnDimension('B')->setWidth(15);
$sheet->getColumnDimension('C')->setWidth(15);
$sheet->getColumnDimension('D')->setWidth(15);
$sheet->getColumnDimension('E')->setWidth(30);
$sheet->getColumnDimension('F')->setWidth(12);
$sheet->getColumnDimension('G')->setWidth(5);
$sheet->getColumnDimension('H')->setWidth(9);
$sheet->getColumnDimension('I')->setWidth(12);
$sheet->getColumnDimension('J')->setWidth(9);




//titre des colones
$sheet->setCellValue('a3','Date');
$sheet->setCellValue('b3','Stock');
$sheet->setCellValue('c3','Type');
$sheet->setCellValue('d3','Chassis');
$sheet->setCellValue('e3','Prestations');
$sheet->setCellValue('f3','Prix HT');
$sheet->setCellValue('g3','Carb.');
$sheet->setCellValue('h3','NB L Carb');
$sheet->setCellValue('i3','Tot. Carb');
$sheet->setCellValue('j3','Bon');

$dateform1 = $datedeb;
list($jour,$mois,$annee) = explode("/",$dateform1);
$C1 = $annee."/".$mois."/".$jour;

$dateform2 = $datefin;
list($jour,$mois,$annee) = explode("/",$dateform2);
$C2 = $annee."/".$mois."/".$jour;

$var_client=TRIM($pseudo);
$ligne=1;
///tittre page
$sheet->setCellValue(('A'.$ligne.''),'');
$sheet->setCellValue(('C'.$ligne.''),'Client : '.$var_client.'');
$sheet->setCellValue(('E'.$ligne.''),'Du : '.$C1.'');
$sheet->setCellValue(('F'.$ligne.''),'Au : '.$C2.'');


// notez la présence du caractère arobase (@) , en cas d'erreur,
// il empêche PHP d'écrire un message d'erreur sur le navigateur
$requete=@mysql_query("SELECT DATE_FORMAT(datesortie,'%d/%m/%Y') AS DateTempS, DATE_FORMAT(datentree,'%d/%m/%Y') AS DateTempE, stock, types, chassis, prestations, prixhtmvt, codecarburant, carburant, totalcarburant, nbjstk, bon FROM tempfact1
WHERE client='$pseudo' && datesortie >='$datedeb' && datesortie <='$datefin' && neuf='$neuf' order by datesortie asc ");
// on vérifie le contenu de la requête ;
if (@mysql_numrows($requete) ==0)
{ // si elle est vide, on en informe l'utilisateur à l'aide d'un Javascript
print "<script> alert('La requête n\'a pas abouti !')</script>";
}
//on renseigne le tableau
$ligne=4;
//variable ligne initialisation ou doit commencer la premiere donnée
while($Result = mysql_fetch_array($requete))
{

$sheet->setCellValue(('A'.$ligne.''),''.$Result[0].'');
$sheet->setCellValue(('B'.$ligne.''),''.$Result[2].'');
$sheet->setCellValue(('C'.$ligne.''),''.$Result[3].'');
$sheet->setCellValue(('D'.$ligne.''),''.$Result[4].'');
$sheet->setCellValue(('E'.$ligne.''),''.$Result[5].'');
$sheet->setCellValue(('F'.$ligne.''),''.$Result[6].'');
$sheet->setCellValue(('G'.$ligne.''),''.$Result[7].'');
$sheet->setCellValue(('H'.$ligne.''),''.$Result[8].'');
$sheet->setCellValue(('I'.$ligne.''),''.$Result[9].'');
$sheet->setCellValue(('J'.$ligne.''),''.$Result[11].'');

$ligne++ ;
}

//$ligne=$ligne-1;
//on aligne les resultat dans les colonnes
$sheet->duplicateStyle($stylealign,'C3:C'.$ligne.'');
$sheet->duplicateStyle($stylealign,'B4:B'.$ligne.'');
$sheet->duplicateStyle($stylealign,'D4'.$ligne.'');
$sheet->duplicateStyle($stylealign,'E4:E'.$ligne.'');
$sheet->duplicateStyle($stylealign,'H3:H'.$ligne.'');
$sheet->duplicateStyle($stylealign,'I3:I'.$ligne.'');
$sheet->duplicateStyle($stylealign,'J3:J'.$ligne.'');
$sheet->duplicateStyle($stylbordure,'A3:A'.$ligne.'');
$sheet->duplicateStyle($stylbordure,'B3:B'.$ligne.'');
$sheet->duplicateStyle($stylbordure,'C3:C'.$ligne.'');
$sheet->duplicateStyle($stylbordure,'D3'.$ligne.'');
$sheet->duplicateStyle($stylbordure,'E3:E'.$ligne.'');
$sheet->duplicateStyle($stylbordure,'F3:F'.$ligne.'');
$sheet->duplicateStyle($stylbordure,'G3:G'.$ligne.'');
$sheet->duplicateStyle($stylbordure,'H3:H'.$ligne.'');
$sheet->duplicateStyle($stylbordure,'I3:I'.$ligne.'');
$sheet->duplicateStyle($stylbordure,'J3:J'.$ligne.'');
//pour un saut de page
//$sheet->setBreak( 'A35' , PHPExcel_Worksheet::BREAK_ROW );

$ligne=$ligne+1;

// 3 eme tableau recapitulatif facture
$requete3=mysql_query("Select prestations,COUNT(prestations) as nbprest,prixhtmvt FROM tempfact1 WHERE client='$pseudo' && datesortie >='$datedeb' && datesortie <='$datefin' && neuf='$neuf' GROUP BY prestations,prixhtmvt ");

//on renseigne le tableau
//on saute 3 lignes supplémentaires
$ligne=$ligne+3;
//retour à la ligne dans la colonne du libellé des prestations
$styleretligne=$sheet->getStyle('A'.$ligne.'');
$styleretligne->applyfromarray(array('alignment'=>array('wrap'=>true),('A'.$ligne.'')));
// titre colonne
$sheet->setCellValue(('A'.$ligne.''),'Prestations');
$sheet->mergeCells('A'.$ligne.''.':'.'C'.$ligne.''); // fusion de deux cellules
$sheet->setCellValue(('D'.$ligne.''),'Nb Prest.');
$sheet->setCellValue(('E'.$ligne.''),'Prix Unit. Prest. en €');
$lignedepart=$ligne;
$ligne=$ligne+1;
while($Result3 = mysql_fetch_array($requete3))
{
$sheet->duplicateStyle($styleretligne,('A'.$ligne.''));
$sheet->setCellValue(('A'.$ligne.''),''.$Result3[0].'');
$sheet->mergeCells('A'.$ligne.''.':'.'C'.$ligne.''); // fusion de deux cellules
$sheet->setCellValue(('D'.$ligne.''),''.$Result3[1].'');
$sheet->duplicateStyle($stylealign,'D'.$ligne.'');
$sheet->setCellValue(('E'.$ligne.''),''.$Result3[2].'');
$sheet->duplicateStyle($stylealign,'E'.$ligne.'');


$ligne++ ;
}
$lignefin=$ligne-1; //permet de ne pas encadrer la derniere ligne
$sheet->duplicateStyle($stylbordure,'A'.$lignedepart.':A'.$lignefin.'');
$sheet->duplicateStyle($stylbordure,'B'.$lignedepart.':B'.$lignefin.'');
$sheet->duplicateStyle($stylbordure,'C'.$lignedepart.':C'.$lignefin.'');
$sheet->duplicateStyle($stylbordure,'D'.$lignedepart.''.$lignefin.'');
$sheet->duplicateStyle($stylbordure,'E'.$lignedepart.':E'.$lignefin.'');

// 3 eme tableau recapitulatif facture
$requete4=mysql_query("Select SUM(nbjstk) as nbj FROM tempfact1 WHERE client='$pseudo' && datesortie >='$datedeb' && datesortie <='$datefin' && neuf='$neuf' ");

//on renseigne le tableau
//on saute 2 lignes supplémentaires
// titre colonne
$ligne=$ligne+1;


$ligne=$ligne+1;
$sheet->setCellValue(('A'.$ligne.''),'En Euros');
$requete2=mysql_query("Select FORMAT(SUM(prixhtmvt),2) as totprest,
FORMAT(SUM(totalcarburant),2) as totcarb,
FORMAT((SUM(prixhtmvt)+SUM(totalcarburant)),2) as totht,
FORMAT(((SUM(prixhtmvt)+SUM(totalcarburant))*20)/100,2) as tva,
FORMAT((SUM(prixhtmvt)+SUM(totalcarburant))*1.200,2) as ttc
FROM tempfact1
WHERE client='$pseudo' && datesortie >='$datedeb' && datesortie <='$datefin' && neuf='$neuf'
order by datesortie asc");
//on renseigne le tableau
$ligne=$ligne+1;
$sheet->setCellValue(('A'.$ligne.''),'Tot. Prest. HT');
$sheet->setCellValue(('B'.$ligne.''),'Tot. Carb. HT');
$sheet->setCellValue(('C'.$ligne.''),'Tot. HT');
$sheet->setCellValue(('D'.$ligne.''),'TVA');
$sheet->setCellValue(('E'.$ligne.''),'Tot. TTC');
$sheet->duplicateStyle($stylbordure,'A'.$ligne.'');
$sheet->duplicateStyle($stylbordure,'B'.$ligne.'');
$sheet->duplicateStyle($stylbordure,'C'.$ligne.'');
$sheet->duplicateStyle($stylbordure,'D'.$ligne.'');
$sheet->duplicateStyle($stylbordure,'E'.$ligne.'');
//variable ligne initialisation ou doit commencer la premiere donnée
$ligne=$ligne+1;
$lignedeb=$ligne;

while($Result2 = mysql_fetch_array($requete2))
{
$sheet->setCellValue(('A'.$ligne.''),''.$Result2[0].'');
$sheet->setCellValue(('B'.$ligne.''),''.$Result2[1].'');
$sheet->setCellValue(('C'.$ligne.''),''.$Result2[2].'');
$sheet->setCellValue(('D'.$ligne.''),''.$Result2[3].'');
$sheet->setCellValue(('E'.$ligne.''),''.$Result2[4].'');

$ligne++ ;
}

$sheet->duplicateStyle($stylbordure,'A'.$lignedeb.'');
$sheet->duplicateStyle($stylbordure,'B'.$lignedeb.'');
$sheet->duplicateStyle($stylbordure,'C'.$lignedeb.'');
$sheet->duplicateStyle($stylbordure,'D'.$lignedeb.'');
$sheet->duplicateStyle($stylbordure,'E'.$lignedeb.'');


$writer = new PHPExcel_Writer_Excel5($workbook);



/* ouverture du fichier avec excel */
header('content-type: application/vnd.ms-excel');//-officedocument.spreadsheetml.sheet') ;
header('Content-Disposition:inline;filename=detail_fact.xls');
$writer->save('php://output');

/*
*$records = './test.xls' ;
*$writer->save($records) ;
*/
mysql_close();
?>