关于java 如何生成类似excel横坐标的问题
http://www.iteye.com/problems/101730
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
Java代码 /** * Copyright (c) 2014, alax * All Rights Reserved. */ package com.alax.framework.admin; /** * * @author alax_app@yeah.net * @Date 2014-5-27 下午09:44:46 * */ public class HexDemo { public static void main(String[] args) { int start = columnToIndex("D"); int end = columnToIndex("AD"); while(start < end){ System.out.println(indexToColumn(start)); start++; } } /** * 用于将Excel表格中列号字母转成列索引,从1对应A开始 * * @param column * 列号 * @return 列索引 */ public static int columnToIndex(String column) { if (!column.matches("[A-Z]+")) { try { throw new Exception("Invalid parameter"); } catch (Exception e) { e.printStackTrace(); } } int index = 0; char[] chars = column.toUpperCase().toCharArray(); 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; } /** * 用于将excel表格中列索引转成列号字母,从A对应1开始 * * @param index * 列索引 * @return 列号 */ public static String indexToColumn(int index) { if (index <= 0) { try { throw new Exception("Invalid parameter"); } catch (Exception e) { e.printStackTrace(); } } index--; String column = ""; do { if (column.length() > 0) { index--; } column = ((char) (index % 26 + (int) 'A')) + column; index = (int) ((index - index % 26) / 26); } while (index > 0); return column; } } |