Hatena::ブログ(Diary)

れいおとのはてなブログ RSSフィード

2013-11-19

PHPExcel 1.7.8で罫線が適用されないケース

PHPExcel 1.7.8で罫線引いたはずなのに出力してみると適用されていないケースがありました。


そのケースとは、シートをコピーした時です。


セルの値関連は何も考えなくても良いのですが、恐らく書式については順序を守らないと適用できません。

なんでかといいますと


・addSheetした時にそれまで操作したStyleは挙動がおかしくなるか、多くの場合適用されていない

・addSheetした最新のシートは次にシートを追加/削除するまでStyleでは参照できない状態


この2つが原因です。

なので対処法は


・Style操作はコピーしたシートをaddSheetした後で操作する。

・最初にいらないシートを用意して置いて最後にそのシートを消す


具体的には以下のとおりです。

//事前にテンプレートとして
//excelファイルを読み込ませてます

//テンプレートをコピー
$template = $excel->getSheet(0)->copy();
$excel->addSheet($template);

//テンプレート用シートを消して
//最後のaddSheetした内容を反映させる
$excel->removeSheetByIndex(0);

//操作したい対象のシート(index指定)
$sheet = $excel->getSheet(0);

//A1セル指定したStyle操作
$cell = $sheet->getStyleByColumnAndRow(0,1);
$borders = $cell->getBorders();

$borders->getBottom()
        ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

バッドノウハウでしかありませんが、これで罫線が反映しました。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

リンク元