Excel_Reviserのハマりがちポイント

テーマ:
たまには技術的な話題でも。

今日まででわかったEXCEL REVISERのハマりがちポイント。
※Excel REVISERはPHPでエクセルを出力することができる大変便利なライブラリです。
【問題1】
・グラフが記述してある基本フォーマットに値を書き込む場合、
 Excel Reviserを通すと、グラフの参照先シートが変わる。
 →恐らく内部的な変数で見ていて、シート作成の順番、グラフ作成の順番によりランダムに変わる。
#解決策
 グラフがあるシートの場合は、必ずマスターのシートを用意し、
 それをコピーして使う。
 コピーした場合は、グラフの参照先シートを指定することができる。

【問題2】
・問題1で参照先を指定するメソッドがあるが、実はライブラリにバグが有り、
 そのままでは動作しない。
 →バイナリを直接見ていて、その正規表現の置換に間違いがある。
#解決策
 下記のように正規表現を書き換える。
 1520行目あたり。
$search='/5110130001020000b0000b003b..../';
$change='5110130001020000b0000b003b'.bin2hex(pack("v",$ref));
  ↓
$search='/000b003b..../';
$change='000b003b'.bin2hex(pack("v",$ref));
$this->sheetbin[$sno]['preMG']=pack("H*",preg_replace($search,$change,bin2hex($this->sheetbin[$sno]['preMG'])));

【問題3】
・問題2で参照元シートを書き換えることには成功するが、SERIES関数の中で、
 第1引数だけが書き換わらない。
 →第1引数は、グラフを作成する際に、タイトル行を入れるとついてきてしまう引数。
#解決策
 グラフを作成するときは、タイトル行を入れない。



丸々
2日、昨日は徹夜気味だったので、
通常工数で3日くらいかな。。。
いやー、久々にしんどかった。