2013-02-07 68 views
51

我想使第一行的單元格爲粗體。PHPExcel使第一行粗體

這是我爲此創建的方法。

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"); 
} 

問題是在輸出excel文件中單元格不是粗體。

+1

是讓所有的行都是粗體還是不粗? –

+0

不是不行。 – Rakesh

+0

你有沒有試過回顯$ cell_name?它是否給出了正確的單元名? –

回答

80

嘗試此範圍的細胞:

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

或單細胞

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

希望幫助

+7

我無法理解你的邏輯傢伙。 $ cell_name有A1,那麼它將是A1:A1。你是在暗示這個? –

+4

不,只是A1或A1:B1爲2個單元格 –

16

假設報頭是在片材起始於A1的第一行上,並且你知道他們有多少人,這是我的解決方案:

$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

這是最適合動態數量的標題!謝謝。 –

+0

是的,謝謝你的回答。這應該是實際的答案! –

40

試試這個

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

您可以嘗試

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

這不起作用。 –

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

這樣,你得到完整的第一行

+3

這不起作用。 –

+0

是的,它的工作原理。我測試了它。 – ednincer

+0

如何設置我的第三行加粗? –

7

這些都是一些提示,使您的細胞BoldBig fontItalic

比方說,我有列從AL

A1 - 是你的起始細胞

L1 - 是你的最後一個單元格

$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); 

我發現這是一個有效的解決方案,你可以用行號替換1的兩個實例。函數返回例如C或Z,它給出了包含任何數據的工作表中的最後一個/最高列。還有getHighestColumn(),其中包括空的單元格,但有樣式或是其他功能的一部分。

1

這遍歷一個特定行,在這種情況下是第1行的列的可變數目:

$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

試試這個

 
    $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); 

這是給我的輸出如下面鏈接。(https://www.screencast.com/t/ZkKFHbDq1le