1. 程式人生 > >操作Excel縱列(數值轉字母)

操作Excel縱列(數值轉字母)

前兩天系統新增了一個報表分析的需求,需要給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