zoukankan      html  css  js  c++  java
  • Excel列名 字母和数字的转换

    Excel的列名是由于字母组成的。 A-Z 分别代表1-26  AA 是27 AB是28 以此类推。

    以下是这种编码的转换方法,如果遇到需要用纯字母编号来表示数字的时候可以用到。

    /**
     * 类似EXCEL的列头编号的转换方法
     */
    public class AlphaIntegerTest {
    
      /**
       * 将数值转换成A-Z的字母表示
       * 
       * @param value 数值
       * @return 字母表示
       */
      public static String toAlphaString(int value) {
        if (value <= 0) {
          throw new IllegalArgumentException();
        }
        StringBuilder result = new StringBuilder();
        do {
          value--;
          int n = value % 26;
          result.append(((char) (n + (int) 'a')));
          value = (int) ((value - n) / 26);
        } while (value > 0);
        return result.reverse().toString();
      }
    
      /**
       * 将编号转换成数值
       * 
       * @param value 编号
       * @return 编号代表的数值
       */
      public static int parseIntByCode(String value) {
        if (value == null || !value.matches("[a-zA-Z]+")) {
          throw new IllegalArgumentException();
        }
        char[] chars = value.toLowerCase().toCharArray();
        int index = 0;
        for (int i = 0; i < chars.length; i++) {
          index += ((int) chars[i] - (int) 'a' + 1) * (int) Math.pow(26, chars.length - i - 1);
        }
        return index;
      }
    
    
      // 测试
      public static void main(String[] args) {
        System.out.println(toAlphaString(1));
        System.out.println(toAlphaString(1 + 26));
        System.out.println(toAlphaString(1 + 26 + 26 * 26));
        System.out.println(toAlphaString(1 + 26 + 26 * 26 + 26 * 26 * 26));
        System.out.println(parseIntByCode("a"));
        System.out.println(parseIntByCode("aa"));
        System.out.println(parseIntByCode("aaa"));
        System.out.println(parseIntByCode("aaaa"));
      }
    
    }
    
  • 相关阅读:
    likely(x)与unlikely(x) __builtin_expect
    c++ ScopeExitGuard
    c++ 11 bind function
    boost shared_ptr weak_ptr
    PL/SQL:使用pragma restrict_references限制包权限
    Nginx的事件处理机制
    读书笔记-HBase in Action-第二部分Advanced concepts-(1)HBase table design
    谈谈工作
    [Java 8] (5) 使用Lambda表达式进行设计
    How to delete a large number of data in SharePoint for List when refreshing data?
  • 原文地址:https://www.cnblogs.com/relucent/p/4728518.html
Copyright © 2011-2022 走看看