2009年8月20日木曜日

RubyでExcel操作:Cell位置制御のための文字変換

ExcelのCell位置をRubyから制御するにはExcelのセル番号?の'A1'とかを指定しないといけません。数値で(1,1)とか指定できそうなものですが、いまだに出来ておりません(^^; 数値で指定できないと'A1'などを添え字として使わなければなりませんが、これをデータ数に応じて増やしていくには足し算をしないといけません。'A1'の5列先は'F1'だとかいう計算ですが、文字のままでは足し算できません。そこで

ASCII文字をコード値に(コード値をASCII文字に)変換する


にあるようにコード値を使って計算します。'A'のコード値に1を足すと’B’となります。すなわち

 col = 'A'
 col = (col[0] + 1).chr #->'B'

のような感じです。
’A1'から列を増やしていくには、
  
 col = 'A'
 col = (col[0]+1).chr # calculate column number
 cellNo = col + '1'

となります。

さらに’Z1’まで行くと、次は’AA1’となりますので、26のmoduloを使って対応する必要があります。

もっと簡単な方法はないのでしょうか?

0 件のコメント: