エクセルの最大列数をもとめる
2013/12/14
excel
java
poi
javaです。
excelは列をアルファベットで表現しています。
Aなら1とかZなら26とかです。
POIではcolの位置を、0スタートの数値であらわすので、プログラムにおとすとき僕は混乱してしまいます。
この辺の感覚が違う人は、こういったことを気にしないし、苦にもしないようですが、僕の場合、デザインのときの位置決めと、コード上での指定を一致させたいです。
というわけで、POI を使う場合は、いつもユーティリティーメソッドのposメソッドを用意したりします。
ちなみにエクセルのバージョンによって、16384まで列が使えるようです。
以下コード
poiの操作で使う場合は、-1して使います。
public class Test26shinsuu {
public static void main(String[] args) {
System.out.println(pos("A"));
System.out.println(pos("B"));
System.out.println(pos("Z"));
System.out.println(pos("AA"));
// Excel 2003の最大列数 256
System.out.println(pos("IV"));
// Excel 2007以降の最大列数 16384
System.out.println(pos("XFD"));
}
static int pos(String s){
String s1 = s.toUpperCase();
char[] cs = s1.toCharArray();
int p = 0;
for(int i=0;i<cs.length;i++){
int c = (int)cs[i] - 64;
p += Math.pow(26, cs.length - (i + 1)) * c;
}
return p;
}
}
エクセル2007の最大列数は2の14乗=16384らしいのですが、列記号XFD=... - Yahoo!知恵袋
: