Java将Excel的列数以字母表示的字符串转换成数字表示
我们知道,在 Excel 中,行数用数字表示,而列数是用字母表示的(如下图所示),有时候需要把它转换成数字来使用,或者把数字转换成字母。(例如使用POI操作Excel)

下面是转换代码,用来进行字母和数字之间的转换:
/**
* 将以字母表示的Excel列数转换成数字表示
*
* @author WuQianLing
* @param letter
* 以字母表示的列数,不能为空且只允许包含字母字符
* @return 返回转换的数字,转换失败返回-1
*/
public static int letterToNumber(String letter) {
// 检查字符串是否为空
if (letter == null || letter.isEmpty()) {
return -1;
}
String upperLetter = letter.toUpperCase(); // 转为大写字符串
if (!upperLetter.matches("[A-Z]+")) { // 检查是否符合,不能包含非字母字符
return -1;
}
long num = 0; // 存放结果数值
long base = 1;
// 从字符串尾部开始向头部转换
for (int i = upperLetter.length() - 1; i >= 0; i--) {
char ch = upperLetter.charAt(i);
num += (ch - 'A' + 1) * base;
base *= 26;
if (num > Integer.MAX_VALUE) { // 防止内存溢出
return -1;
}
}
return (int) num;
} /**
* 将数字转换成以字母表示的Excel列数
*
* @author WuQianLing
* @param num
* 表示列数的数字
* @return 返回转换的字母字符串,转换失败返回null
*/
public static String numberToLetter(int num) {
if (num <= 0) { // 检测列数是否正确
return null;
}
StringBuffer letter = new StringBuffer();
do {
--num;
int mod = num % 26; // 取余
letter.append((char) (mod + 'A')); // 组装字符串
num = (num - mod) / 26; // 计算剩下值
} while (num > 0);
return letter.reverse().toString(); // 返回反转后的字符串
}
测试类:
/**
* 测试
*/
public class Demo { public static void main(String[] args) {
System.out.println(ExcelUtil.letterToNumber("A"));
System.out.println(ExcelUtil.letterToNumber("b"));
System.out.println(ExcelUtil.letterToNumber("Z"));
System.out.println(ExcelUtil.letterToNumber("aB"));
System.out.println(ExcelUtil.letterToNumber("ABC")); System.out.println(ExcelUtil.numberToLetter(1));
System.out.println(ExcelUtil.numberToLetter(2));
System.out.println(ExcelUtil.numberToLetter(26));
System.out.println(ExcelUtil.numberToLetter(28));
System.out.println(ExcelUtil.numberToLetter(731));
} }
测试执行的结果:
1
2
26
28
731
A
B
Z
AB
ABC
Java将Excel的列数以字母表示的字符串转换成数字表示的更多相关文章
- java基础60 JavaScript字符串转换成数字(网页知识)
1.字符串转换成数字 <!doctype html> <html> <head> <meta charset="utf-8"> &l ...
- android112 jni 把java的字符串转换成c的字符串,数组处理
package com.itheima.charencode; import android.os.Bundle; import android.app.Activity; import androi ...
- Java将ip字符串转换成整数的代码
下面代码是关于Java将ip字符串转换成整数的代码,希望对各位有较大用途. public class IpUtil { public static int Ip2Int(String strIp){ ...
- 【Java】 剑指offer(67) 把字符串转换成整数
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 请你写一个函数StrToInt,实现把字符串转换成整数这个功能 ...
- C#字母转换成数字/数字转换成字母 - ASCII码转换
字母转换成数字 byte[] array = new byte[1]; //定义一组数组arrayarray = System.Text.Encoding.ASCII.GetBytes(strin ...
- 转换成json字符串,与json字符串转换成java类型都要先转换成json对象
转换成json字符串,与json字符串转换成java类型都要先转换成json对象
- JSON-JSON字符串转换成JSON对象、JSON对象数组、java实体类以及保存到List列表中
处理JSON字符串时,一直出错,写个样例后发现原来是没有弄清楚数据的格式问题. 实现的是 JSONString 转换成java对象 或是 list列表 实例类 News package lyx.ent ...
- java 字符串转json,json转实体对象、json字符串转换成List、List转String、以及List排序等等...
@RequestMapping(value = "updateInvestorApplyAccountNo", method = RequestMethod.POST) @Resp ...
- WUSTOJ 1237: 将八进制的字符串转换成等价的十进制字符串(Java)
1237: 将八进制的字符串转换成等价的十进制字符串 题目 输入八进制,输出十进制.更多内容点击标题. 分析 输入的八进制数有20位.已经超出了Integer.MAX_VALUE的范围,因此此 ...
随机推荐
- CentOS 7安装OpenVPN
命令很简单,但是网上似乎没资料,只有RHEL6以下的资料. 直接贴命令: 1 2 3 4 5 cd ~ wget http://swupdate.openvpn.org/as/openvpn-as-2 ...
- 使用testNGListenter来自定义日志
背景 用testNG写用例的时候,只是打印了请求的日志,没有打印这个用例的开始和结束的标识,想加上这个标识这样更好的排查问题 这种日志是加在用例开始执行和结束,相当于spring中的AOP功能,今天翻 ...
- 部署网络存储ISCSI
1.什么是ISCSIInternet Small Computer System Interface 互联网小型计算机接口技术,是一种将SCS存储与以太网技术相结合,可以用来在互联网中传输SCSI接口 ...
- jdk动态代理 案例
import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflec ...
- BootStrap框架引入文件
bootstrap -- 框架 引入需要的 这是外网的------************************************************************* < ...
- Windows server 2008启动remote dosktop services服务报错1079
原创 欢迎转载,届时请注明出处 报错场景 今天,刚开始启动win server的远程连接服务(remote desktop services)时 该服务可以正常启动,然后选择了 “计算机--> ...
- robot framework-断言
*** Test Cases *** 断言一 #01.should contain . should not contain 与should contain x times @{list1}= cre ...
- idea 新建New Module时Maven的列表加载不出来
Under Build → Build Tools → Maven → Importing, set VM options for importer to -Xmx1024m (the default ...
- [JS] 瀑布流加载
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...
- 手机APP测试点总结
一.功能性测试: (1)根据产品需求文档编写测试用例 (2)软件设计文档编写用例 二.兼容性适配性测试: (1)Android.iOS版本的兼容性 (2)手机分辨率兼容性 (3)网络的兼容性:2G/3 ...