web-dev-qa-db-fra.com

PHPExcel Définir la bordure et le format pour toutes les feuilles dans un tableur

J'essaie actuellement de définir toutes les bordures de ma feuille de calcul, ainsi qu'un formatage tel que la taille automatique.

Mon code ci-dessous fonctionne, pour la feuille 1. Toutes les autres feuilles à l'intérieur de la feuille de calcul sont complètement intactes. J'ai essayé de le faire fonctionner avec toutes les autres feuilles de cette feuille de calcul, mais sans succès.

Des idées sur la façon dont je peux définir la mise en forme de manière à ce que toutes les feuilles aient des bordures et se réduisent automatiquement? La mise en page de toutes les feuilles de cette feuille de calcul est identique. J'exporte dans un fichier XLSX.

À votre santé,

/**autosize*/
for ($col = 'A'; $col != 'P'; $col++) {
    $objPHPExcel->getActiveSheet()->getColumnDimension($col)->setAutoSize(true);
}


/** Borders for all data */
   $objPHPExcel->getActiveSheet()->getStyle(
    'A2:' . 
    $objPHPExcel->getActiveSheet()->getHighestColumn() . 
    $objPHPExcel->getActiveSheet()->getHighestRow()
)->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);



/** Borders for heading */
   $objPHPExcel->getActiveSheet()->getStyle(
    'A1:O1'
)->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THICK);

QUESTION SUPPLEMENTAIRE: J'ai actuellement défini les en-têtes. Les en-têtes apparaissent sur la feuille 1, mais n'apparaissent dans aucune autre feuille .. est-il possible d'afficher les en-têtes dans toutes les feuilles?.

$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Asset_id');
$objPHPExcel->getActiveSheet()->setCellValue('B1', 'Asset_name');
$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Asset_type');
$objPHPExcel->getActiveSheet()->setCellValue('D1', 'Asset_make');
$objPHPExcel->getActiveSheet()->setCellValue('E1', 'Asset_model');
17
Tuzki

Vous pouvez définir un style par défaut pour l'ensemble du classeur (toutes les feuilles de calcul):

$objPHPExcel->getDefaultStyle()
    ->getBorders()
    ->getTop()
        ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel->getDefaultStyle()
    ->getBorders()
    ->getBottom()
        ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel->getDefaultStyle()
    ->getBorders()
    ->getLeft()
        ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel->getDefaultStyle()
    ->getBorders()
    ->getRight()
        ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

ou

  $styleArray = array(
      'borders' => array(
          'allborders' => array(
              'style' => PHPExcel_Style_Border::BORDER_THIN
          )
      )
  );
$objPHPExcel->getDefaultStyle()->applyFromArray($styleArray);

Et cela peut être utilisé pour toutes les propriétés de style, pas seulement les bordures.

Toutefois, la taille automatique des colonnes est structural plutôt que stylistic et doit être définie pour chaque colonne de chaque feuille de calcul.

MODIFIER

Notez que le style de classeur par défaut ne s'applique qu'à Excel5 Writer.

39
Mark Baker
for ($s=65; $s<=90; $s++) {
    //echo chr($s);
    $objPHPExcel->getActiveSheet()->getColumnDimension(chr($s))->setAutoSize(true);
}
1
Japarradog