ドゥアイネットのプログラマー、湯川が開発日記を綴ります。

CALENDAR
S M T W T F S
  12345
6789101112
13141516171819
20212223242526
2728293031  
<< January 2019 >>
ARCHIVES
CATEGORIES
<< Treeコントロールの矢印 | main | FlexPrintJobのprintAsBitmap >>
PHPExcelでの範囲指定
PHPExcelではセルの設定を変えるときに、
「getStyle」や「getStyleByColumnAndRow」を使って
そのセルのスタイルを取得して、フォント、色、線などの変更を行います。

「getStyleByColumnAndRow」は一つのセルしか選択できません。
「getStyle」は「A1:D1」のように指定すると範囲指定ができますが、
プログラムで書く場合は、「3,10,8,10」のように数字で範囲を指定したいところです。

PHPExcelのライブラリを見てみたら「Cell.php」の中に
「stringFromColumnIndex」というメソッドを見つけました。
これは、列番号を数字で渡すと、「A、AW」などの文字を使っての列番号に変換してくれるものでした。

このメソッドを使って、数字で範囲指定して色をつけるメソッドをつくりました。

  /**
   * 範囲指定で色をつける
   *
   * @param $p_colFrom,$p_rowFrom,$p_colTo,$p_rowTo(座標)
   * @param p_color   色
   */
  function setRangeColor($p_colFrom,$p_rowFrom,$p_colTo,$p_rowTo ,$p_color)
  {
    $v_range = PHPExcel_Cell::stringFromColumnIndex($p_colFrom) . $p_rowFrom . ":" .
               PHPExcel_Cell::stringFromColumnIndex($p_colTo) . $p_rowTo ;
    
    $v_style = $this->_activesheet->getStyle($v_range);
    $v_style->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
    $v_style->getFill()->getStartColor()->setRGB($p_color);
    $v_style->getFill()->getEndColor()->setRGB($p_color);
  }

一つずつセルを指定して色をつけてもできるのですが、
このやり方のほうが、少し速いのではないかと思います。
| PHP | 15:26 | comments(0) | - |
コメント
コメントする