読者です 読者をやめる 読者になる 読者になる

PHPExcelでオートシェイプが使えない

PHPExcel - Home
PHPExcel、大変便利で有り難い神ライブラリなんだけど オートシェイプ( Autoshapes )が使えないという弱点がある。テンプレートファイルに貼り付けておいたオートシェイプがすべて削除されてしまうという…。画像やグラフは大丈夫みたい。

エクセルのオートシェイプはとっても便利で 代替の効かない表現ができるため、編集はできなくとも テンプレートのオートシェイプが削除されないだけでも何とかならないかと思ったが。なんともならなかったorz。

/Writer/Excel2007/Drawing.php にはコメントアウトされたコードがたくさん残ってて痕跡はあるんだけど。。



エクセルファイル(.xlsx)において、オートシェイプの情報は xl/drawings/drawing*.xml に保存されている。その中で

 <xdr:twoCellAnchor></xdr:twoCellAnchor>

に挟まれてるところ ひとつひとつがオートシェイプのそれぽい。

そこを別途読み出して、保存するときにそのままdrawing*.xml に書き込むような感じか。
試したところ、ソースファイルの上記部分をそのまま書き戻せば大丈夫なようだった。


で、ひとつ気がついたんだけど、画像ファイルは再貼り付けされるんだけど
元ファイルの twoCellAnchor が oneCellAnchor に変換されてる。微妙に大きさが合わないことがあると思ってたが、それが原因なのかな。