2013-02-07 21 views
51

Sto cercando di rendere le celle nella prima riga in grassetto.PHPExcel Crea prima riga in grassetto

Questo è il metodo che ho creato per questo scopo.

function ExportToExcel($tittles,$excel_name) 
{ 
    $objPHPExcel = new PHPExcel(); 
    $objRichText = new PHPExcel_RichText(); 
    // Set properties 
    $objPHPExcel->getProperties()->setCreator("SAMPLE1"); 
    $objPHPExcel->getProperties()->setLastModifiedBy("SAMPLE1"); 
    $objPHPExcel->getProperties()->setTitle("SAMPLE1"); 
    $objPHPExcel->getProperties()->setSubject("SAMPLE1"); 
    $objPHPExcel->getProperties()->setDescription("SAMPLE1"); 


    // Add some data 
    $objPHPExcel->setActiveSheetIndex(0); 

    $letters = range('A','Z'); 
    $count =0; 
    $cell_name=""; 
    foreach($tittles as $tittle) 
    { 
    $cell_name = $letters[$count]."1"; 
    $count++; 
    $value = $tittle; 
    $objPHPExcel->getActiveSheet()->SetCellValue($cell_name, $value); 
    // Make bold cells 
    $objPHPExcel->getActiveSheet()->getStyle($cell_name)->getFont()->setBold(true); 
    } 
    // Save Excel 2007 file 
    $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); 
    //$objWriter->save(str_replace('.php', '.xlsx', __FILE__)); 
    $objWriter->save($excel_name.".xlsx"); 
} 

Il problema è nel file di output in Excel le celle non sono in grassetto.

+1

sta rendendo tutte le righe in grassetto o no? –

+0

Non funziona. – Rakesh

+0

hai provato a echo $ cell_name? sta dando il nome di cella corretto? –

risposta

80

Prova questo per intervallo di celle:

$from = "A1"; // or any value 
$to = "B5"; // or any value 
$objPHPExcel->getActiveSheet()->getStyle("$from:$to")->getFont()->setBold(true); 

o singola cella

$cell_name = "A1"; 
$objPHPExcel->getActiveSheet()->getStyle($cell_name)->getFont()->setBold(true); 

speranza che aiuta

+7

non capisco il tuo amico di logica. $ cell_name ha A1, quindi A1: A1. Stai suggerendo questo? –

+4

No, solo A1 o A1: B1 per le 2 celle –

16

intestazioni Supponendo sono sulla prima riga della partenza foglio alla A1, e sai quanti di loro ci sono, questa era la mia soluzione:

$header = array(
    'Header 1', 
    'Header 2' 
); 

$objPHPExcel = new PHPExcel(); 
$objPHPExcelSheet = $objPHPExcel->getSheet(0); 
$objPHPExcelSheet->fromArray($header, NULL); 
$first_letter = PHPExcel_Cell::stringFromColumnIndex(0); 
$last_letter = PHPExcel_Cell::stringFromColumnIndex(count($header)-1); 
$header_range = "{$first_letter}1:{$last_letter}1"; 
$objPHPExcelSheet->getStyle($header_range)->getFont()->setBold(true); 
+0

questo è meglio per il numero dinamico di intestazioni! Grazie. –

+0

Sì, grazie per questa risposta. Questa dovrebbe essere la risposta reale! –

40

Prova questa

$objPHPExcel->getActiveSheet()->getStyle('A1:D1')->getFont()->setBold(true); 
-1

si può provare

$objPHPExcel->getActiveSheet()->getStyle(1)->getFont()->setBold(true); 
+0

Questo non funziona. –

20
$objPHPExcel->getActiveSheet()->getStyle('1:1')->getFont()->setBold(true); 

questo modo si ottiene la prima fila completa

+3

Questo non funziona. –

+0

Sì, funziona. L'ho provato – ednincer

+0

come impostare la mia terza riga in grassetto? –

7

Questi sono alcuni suggerimenti per rendere le cellule Bold, Big font, Italic

Diciamo che ho colonne A-L

A1 - è il vostro cellulare di partenza

L1 - è la tua ultima cella

$objPHPExcel->getActiveSheet()->getStyle('A1:L1')->getFont()->setBold(true); 
$objPHPExcel->getActiveSheet()->getStyle('A1:L1')->getFont()->setSize(16); 
$objPHPExcel->getActiveSheet()->getStyle('A1:L1')->getFont()->setItalic(true); 
2
$objPHPExcel->getActiveSheet()->getStyle("A1:".$objPHPExcel->getActiveSheet()->getHighestDataColumn()."1")->getFont()->setBold(true); 

Ho trovato questo per essere una soluzione di lavoro, è può sostituire le due istanze di 1 con il numero di riga. La funzione HighestDataColumn restituisce ad esempio C o Z, fornisce l'ultima/la colonna più alta nel foglio contenente i dati. C'è anche getHighestColumn(), che includerebbe celle vuote ma con stile o che fanno parte di altre funzionalità.

1

This scorre un numero variabile di colonne di una riga particolare, che in questo caso è la prima fila:

$rownumber = 1; 
$row = $this->objPHPExcel->getActiveSheet()->getRowIterator($rownumber)->current(); 

$cellIterator = $row->getCellIterator(); 
$cellIterator->setIterateOnlyExistingCells(false); 

foreach ($cellIterator as $cell) { 
    $cell->getStyle()->getFont()->setBold(true); 
} 
1

Prova questa

 
    $objPHPExcel = new PHPExcel(); 
    $objPHPExcel->getProperties()->setCreator("Maarten Balliauw") 
           ->setLastModifiedBy("Maarten Balliauw") 
           ->setTitle("Office 2007 XLSX Test Document") 
           ->setSubject("Office 2007 XLSX Test Document") 
           ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.") 
           ->setKeywords("office 2007 openxml php") 
           ->setCategory("Test result file"); 
    $objPHPExcel->setActiveSheetIndex(0); 
    $sheet = $objPHPExcel->getActiveSheet(); 
    $sheet->setCellValue('A1', 'No'); 
    $sheet->setCellValue('B1', 'Job ID'); 
    $sheet->setCellValue('C1', 'Job completed Date'); 
    $sheet->setCellValue('D1', 'Job Archived Date'); 
    $styleArray = array(
     'font' => array(
     'bold' => true 
     ) 
    ); 
    $sheet->getStyle('A1')->applyFromArray($styleArray); 
    $sheet->getStyle('B1')->applyFromArray($styleArray); 
    $sheet->getStyle('C1')->applyFromArray($styleArray); 
    $sheet->getStyle('D1')->applyFromArray($styleArray); 
    $sheet->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 1); 

Questo è datemi output come sotto (https://www.screencast.com/t/ZkKFHbDq1le)