2013-02-07 12 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

セルの範囲のためにこれを試してください:A1から始まるヘッダーがシートの最初の行にあると仮定

+7

あなたの論理を理解できません。 $ cell_nameにはA1があり、A1:A1になります。あなたはこれを提案していますか? –

+4

いいえ、2つのセルのA1またはA1:B1だけです。 –

16

を助ける

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

希望、及びどれくらいの人がいるか分かりますが、これは私の解決策でした:

$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

第3行を太字に設定するにはどうすればよいですか?太字として全体の二行を2セット:2から –

7

これらは、あなたの細胞を作るためにいくつかのヒントですBoldBig fontItalic

さんは、私がL

A1Aから列を持っているとしましょう - あなたの出発細胞

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の2つのインスタンスを行番号で置き換えることができます。 HighestDataColumn関数は、たとえば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

関連する問題