JAVA实现EXCEL行列号解析(一)——单格解析

Excel每一个单元格都已一个单元格名:

如:A1中A表示第一列,1表示第一行。再比如AB3表示第28列,第3行。

说到底,实际上是10进制与26进制之间的转化!


1. 通过单元格名获得行号

如输入A12获得是第12行的。

	public static int row(String cellName)
	{
		int row=0;
		char[] c=cellName.toUpperCase().toCharArray();
		boolean startFlag=false;//保证了数字之后不能出现字母
		int index=0;
		while(index'9')
			{
				index++;//容易出错的地方
				if(	startFlag)
					throw new IllegalArgumentException("单元格名称输入错误,请检查");
				continue;
			}
			row=row*10+(c[index]-'0');
			startFlag=true;
			index++;
		}
		return row;
	}



2. 通过单元格名获得列号。如输入AB12,对应的列号为28列

	public static int column(String cellName)
	{
		int column=0;
		char[] c=cellName.toUpperCase().toCharArray();
		int index=0;
		while(index'Z')
				break;

			column=column*26+(c[index]-'A'+1);
			index++;
		}
		return column;
	}


3. 通过给定一个行号,列号,得到一个单元格名称如给定12行,28列;得到的是AB12

	public static String cellName(int row,int col)
	{
		ArrayList list=new ArrayList();
		while(col>0)
		{
			list.add((char) (col%26+'A'-1));
			col/=26;
		}
		StringBuffer buffer=new StringBuffer();
		for(int i=list.size()-1;i>=0;i--)
			buffer.append(list.get(i));
		buffer.append(""+row);
		return buffer.toString();
	}


你可能感兴趣的:(JAVA实现EXCEL行列号解析(一)——单格解析)