0
0

Excelの列番号(記号?)を取得する

Last updated at Posted at 2024-04-19

PhpSpreadsheetを本格的に扱うようになって知ったTIPS。

データをシートに書き込むとき、まとめて書き込む(読み込むときも)なら$worksheet -> fromArray($data, NULL, 'A1');みたいにできるけど、n列、n+16列、n+32列…というセルの値にアクセスしたいときに「n+128列の列番号(記号)って何!?」となる。

このとき便利なのが

$cols = [];
$a = 'A';
for ($i = 1; $i <= 1000; $i++) {
    $cols[] = $a;
    $a++;
}
echo $cols[940];  //AJD

というように文字列をインクリメントすると、勝手にA, B, C, ... Z, AA, AB, ... AY, AZ, BA, BB, ... ZY, ZZ, AAA, AAB, ...という文字列を生成してくれる仕様。

逆に列記号からn列目を引きたいときは

$cols_r = array_flip($cols);
echo $cols_r['ACE'];  //759

となる。
PHPって便利だね。まあR1C1形式を使えばいいと言われたら元も子もないけど…。


とここまで書いたところで調べたら、そもそもそういう関数がPhpSpreadsheetには用意されていて、

use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
$col_str = Coordinate::stringFromColumnIndex(940);
echo $col_str;  //AJD

だそうですハイ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0