閉じる
  1. Mac + Parallels で日本語入力(IME)切り替えをスムー…
閉じる
閉じる
  1. MacでVOICEROID
  2. Macの通知を制御する(Google Chromeだけオフにする対応も…
  3. 尿酸値を下げる(プリン体が原因ではなかった?)
  4. 100円でLightningケーブルを保護する vs 100均Ligh…
  5. iPhone機種変更で困ったこと(復元できない・ヘルスケア・Apple…
  6. 事業承継について(3)節税に向けて
  7. 事業承継について(2)我が社の株価はいくらか?
  8. 事業承継について(1)
  9. PHPExcelでセルの名前(ラベル)を使う
  10. MacとiPhoneでメモ帳を同期する
閉じる

リンゴと守護神とペンギンと窓

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 {
    // ラベルがないときの処理
}

関連記事

  1. キャッシュファイルが作成できません

  2. iOSデバイスのUDID(識別子)を調べる

  3. Macでステップカウンタ(Ohcount)を使う

  4. PHPExcelで大きいエクセルファイルを読み込んだときメモリ不…

おすすめ記事

  1. Mac + Parallels で日本語入力(IME)切り替えをスムーズに

コメント

  • トラックバックは利用できません。

  • コメント (1)

おすすめ記事

  1. MacでVOICEROID
  2. Macの通知を制御する(Google Chromeだけオフにする対応も)
  3. 尿酸値を下げる(プリン体が原因ではなかった?)
ページ上部へ戻る
%d人のブロガーが「いいね」をつけました。