PHPでExcel方眼紙を作ってみた

第2回 岡山PHP勉強会
http://togetter.com/li/261561
 
まぁ、まさかPHP触らない人が勉強会に参加してるとか
アレなので、ちょっと遊んでみた。
 
環境はxamppの最新ということで1.7.7
http://www.apachefriends.org/jp/xampp-windows.html
入れたあとに、\xampp\phpにPathを通す。
 
玩具はこのライブラリの最新版1.7.6
PHPExcel
http://phpexcel.codeplex.com/
 
で、こんな風に方眼紙を作ってみた。

<?php
// この2つのファイルを読み込みます
require_once './Classes/PHPExcel.php';
require_once './Classes/PHPExcel/IOFactory.php';

$objPHPExcel = new PHPExcel();

$sheet = $objPHPExcel->setActiveSheetIndex(0);
$sheet->setTitle('市松模様');

for($no_of_row=1; $no_of_row < 60;$no_of_row++){
// データ部分の行の高さを指定
$sheet->getRowDimension($no_of_row)->setRowHeight(10);
}

for($no_of_col=0; $no_of_col < 120;$no_of_col++){
// データ部分の列の幅を指定
$sheet->getColumnDimensionByColumn($no_of_col)->setWidth(2);
}

for($no_of_row=1; $no_of_row < 60;$no_of_row++){
for($no_of_col=0; $no_of_col < 120;$no_of_col++){
if (($no_of_col + $no_of_row) % 2 == 1) {
//セルの背景色設定
$sheet->getStyleByColumnAndRow($no_of_col, $no_of_row)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$sheet->getStyleByColumnAndRow($no_of_col, $no_of_row)->getFill()->getStartColor()->setARGB('FF000000');
}}}

// Excel2007でファイルに保存
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('test.xlsx');

 
setRowHeightがポイント数なのに対しsetWidthが文字数なのがきちんと方眼紙化するときの弊害かな。
フォントを指定すると安定するかもしれない。
カラムが'A'〜で指定するにはgetColumnDimensionByColumnではなくgetColumnDimensionが使えるが
'Z'以上を上手に使えないので上記のように対応した。ちなみにRowが1オリジンなのにColumnは0オリジン。
最後に気がついたんだが、セル操作してないな。
 

    • -

 
ところで、残念な方はこれ使ったらよかったんじゃないかなぁ。
jbanner
http://www.vector.co.jp/soft/win95/writing/se289006.html
LinuxMacには入ってるらしいbannerコマンドの日本語フォント対応らしい。
オープンソースだけど、Windows用である。

jbanner -w 120 たけとも残念
    X                               X                X                   X X           X
    X             X        X        X                X          XXXXXXX  X  X         X X
    XXXX          X        X        X             X  X            X      XXXXX       X   X
 XXXX            X         X         X             XXXXXXX        X   XXXX          X     X
   X             X    XXXXXXXXX      X   XXX         X            XXX    X        XX XXXXX XX
   X    XXXXX    X         X         X XX            X           X  X    XXXXX  XX           XX
   X             X         X         XX          X   X     X     X  X XXXX         XXXXXXXX
  X              X         X        X             XXXXXXXX  X    XX X     X  XX           X
  X              X         X       X                X        X  X  XX    XXXX            X
  X              X         X      X                 X        X  X  X  XXX X  X          X
  X    X         X        X       X                 X        X     X       X X      X  X
 X     X          X       X       X                 X        X    X        XX    X  X   X   X
 X     X          X      X         X                 X      X     X       X X X  X  X        X
 X      XXXXXX         XX           XXXXXXXX          XXXXXX     X      XX   XX X   X     X  X
                                                                X     XX      X      XXXXXX

 
方眼紙に読み込もうかと思ったけど面倒になったので今日はオシマイ。