Apache POIを使ってオートシェイプの情報を取得

こちら*1の情報を参考にさせていただき、オートシェイプの情報を取得してみた。

  1. エクセル2007形式(xlsx)のスケジュール表
  2. WBS IDが記載されている
  3. WBS IDごとにガントチャートをオートシェイプで記載し、開始終了を記載している

ポイントは以下にてオートシェイプの座標が取れること。この辺を参考に*2

  1. XSSFClientAnchor.getrow1:オートシェイプの左上
  2. XSSFClientAnchor.getcol1:オートシェイプの左上
  3. XSSFClientAnchor.getrow2:オートシェイプの右下
  4. XSSFClientAnchor.getcol2:オートシェイプの右下

座標からカラムとかに変換してハンドリングしないといけないかと思っていたので、割と感動^^

XSSFAnchorをXSSFShape.getAnchorで取得してXSSFShapeにキャストしてみましたが、
どちらかというと、以下のやり方の方がスマートそう。

if (shape instanceof XSSFPicture) {
XSSFClientAnchor xca = ((XSSFPicture) shape).getPreferredSize();