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
だそうですハイ。