前两天系统新增了一个报表分析的需求,需要给Excel添加函数,由于Excel纵列的元素是动态数据,无法确定各纵列在Excel中的下标,于是迂回了下,遍历数据创建纵列元素的时候保存其下标数值,再将下标数值转化为对应Excel纵列的A.B……AA.AB……,转的时候比较麻烦,上网搜了下,发觉相关信息很少,于是在这里记录一下,以备后用和参考。
1、忘记是哪位朋友的blog中的评论:
public static String getExcelColumnLabel(int index){
String rs = "";
do {
index--;
rs = ((char) (index % 26 + (int) 'A')) + rs;
index = (int) ((index - index % 26) / 26);
} while (index > 0);
return rs;
}
测试了一下:
System.out.println(getExcelColumnLabel(0)); //输出@
System.out.println(getExcelColumnLabel(1)); //输出A
System.out.println(getExcelColumnLabel(25)); //输出Y
System.out.println(getExcelColumnLabel(26)); //输出Z
System.out.println(getExcelColumnLabel(27)); //输出AA
发觉上述方法下标是从1开始,而Excel纵列的下标是从0开始的,由于赶时间也就凑合着用吧,后来闲暇的时候就另外弄了一个下标从0开始的,方法如下:
/*****
* @author :QZC
* @createDate :2015年12月8日 下午3:49:54
* 函数功能描述:
* @param col 从0开始
* @return
*****/
public static String getExcelColumnLabel(int col) {
if (col > 25) {
return getExcelColumnLabel((col) / 26 - 1) + String.valueOf((char) ('A' + col % 26));
}
return String.valueOf((char) ('A' + col));
}
测试:
System.out.println(getExcelColumnLabel(0)); //输出A
System.out.println(getExcelColumnLabel(25)); //输出Z
System.out.println(getExcelColumnLabel(26)); //输出AA