我正在尝试使用 JExcel 重新排序一些 Excel 列。我还需要找到对其他单元格的引用,然后重新映射它们以引用正确的单元格。我觉得我做了很多艰苦的工作,但我遇到了一个绊脚石。
我在wikipedia上找到了这段代码,链接到 SO:
public static String toBase26(int number){
number = Math.abs(number);
String converted = "";
// Repeatedly divide the number by 26 and convert the
// remainder into the appropriate letter.
do
{
int remainder = number % 26;
converted = (char)(remainder + 'A') + converted;
number = (number - remainder) / 26;
} while (number > 0);
return converted;
}
但是当我在其中运行数字 35 时,会发生以下情况:
number
= 35remainder
= 9converted
= 字符(9+'A')+"" = Jnumber
= (35-9)/26 = 1- 1>0
remainder
= 1char(1+'A')
= Bconverted
= 字符(1+'A')+"J" = BJ
以某种预期的方式,即 Base 10 (35) = Base 26 (19)。但我实际上想参考 AJ 栏。
我无法弄清楚我需要做哪些改变才能得到正确的字母。每当我试图在纸上解决它时,我最终都会毁掉之前提取的字母。例如,我认为这行不通,因为这意味着我remainder
第一次以 8 结束,然后将转换为 I,除非我错过了什么?
对此的任何帮助将不胜感激。我环顾四周并在这上面浪费了足够的时间。我只是想要一些帮助来让它工作。