PHPExcelでセルの名前(ラベル)を使う
セルに対する通常の処理
こんな風に定義されているとして・・
$objReader = PHPExcel_IOFactory::createReader("Excel2007"); $book = $objReader->load('hoge.xlsx'); $sheet = $book->setActiveSheetIndex(0);
セルの通名(A1, B3など)を使う
// A1セルに1024をセット $sheet->setCellValue("A1", 1024);
セルの列番号、行番号を使う
// A1セルに2048をセット。列はゼロオリジン、行は1オリジン・・不思議 $sheet->getCellByColumnAndRow(0, 1)->setValue(2048);
セルの名前(ラベル)を使う
// ラベルの定義があるか調べる if ($sheet->cellExists("MY_CELL_LABEL")) { // ラベルの設定されているセルに 4096をセット $sheet->setCellValue("MY_CELL_LABEL", 4096); } else { // ラベルが無いときの処理 }
名前(ラベル)から通名(A1, B3など)を得る
画像を貼るときは、名前で setCoordinates できない。通常は、
$objDrawing = new PHPExcel_Worksheet_drawing(); // 画像オブジェクトをインスタンス化 $objDrawing->setPath("hoge.jpg"); // 画像ファイルを得る $ojDrawing->setCoodinates("A1"); // 配置セルを決める $objDrawing->setOffsetX(100); // 右にずらす $objDrawing->setOffsetY(40); // 下にずらす $objDrawing->setWOrksheet($book->getAcgiveSheet()); // 画像をワークシートに配置
などとすると思うが、セルの名前で配置しようとすると例外が発生する。
このため、名前からセルの通名を得る。上記、配置セルを決める部分を以下のようにする。
if ($sheet->cellExists("MY_JPG_LABEL")) { // 目的のラベルがあるかを調べる $tmp_cell = $sheet->getCell("MY_JPG_LABEL"); // 名前からセルを得る $tmp_cell_name = $tmp_cell->getColumn() . $tmp_cell->getRow(); // 通名を得る $objDrawing->setCoodinates($tmp_cell_name); // 配置セルを決める } else { // ラベルがないときの処理 }
コメント
トラックバックは利用できません。
コメント (0)
この記事へのコメントはありません。