Excel里数字列号转换为字符标签列
2012-04-07 12:28
281 查看
在进行数据库导出到Excel时,常会用到将列,如 第1列转换为 A,第2列转换为 B 的情况。这时你就要写算法了。
哈哈,我这里有现成的了。
先上代码,后解析。
function CellToRef(const X,Y:Integer):string;
function GetRef(const X:Integer):string;
var
token,I,R:Integer;
begin
Result:='';
token:=X;
repeat
I := token div 26;
R := token mod 26;
if R <> 0 then
begin
Result:=Char(R + 64) + Result;
end
else if I > 0 then
begin
Result := 'Z' + Result ;
Dec(I);
end;
token := I;
until I = 0;
end;
begin
Result:= GetRef(X) + IntToStr(Y);
end;
代码使用Delphi编写,等会我解析完算法,就可以换成其它语言了编写了。
函数 CellToRef有两个参数,X表示列号,Y表示行号,返回类型为字符串,如: CellToRef(1,1) 返回为 A1 。当然,这里的X,Y是从0开始还是从1开始要你自己界定。
内嵌函数GetRef有一个参数,X表示列号,当然在delphi,做为内嵌函数,这个参数是可以省掉的。返回值为字符串,功能为将一个数字列号转为相应的字符列号表示。如:GetRef(1)返回为 A。
算法解析: 我们知道英文字符有26个。即,A-Z(不使用小写形式的)。所以,对给写的数字X进行26进制的比较,
即 取整(I := token div 26;)与取余(R := token mod 26;)。之后判断是否整除,即:R = 0;如果没有整除,那么这个余数就做为结果中的一个字符了(Result:=Char(R + 64) + Result; 其中Char(R+64)为将数字+64之后转为英文字母)。如果可以整除,那么向结果中输出 Z (Result := 'Z' + Result ;) ,同时把数字X减去1(Dec(I));之后继续执行上述操作直到完全整除为止。
OK,结束了。
哈哈,我这里有现成的了。
先上代码,后解析。
function CellToRef(const X,Y:Integer):string;
function GetRef(const X:Integer):string;
var
token,I,R:Integer;
begin
Result:='';
token:=X;
repeat
I := token div 26;
R := token mod 26;
if R <> 0 then
begin
Result:=Char(R + 64) + Result;
end
else if I > 0 then
begin
Result := 'Z' + Result ;
Dec(I);
end;
token := I;
until I = 0;
end;
begin
Result:= GetRef(X) + IntToStr(Y);
end;
代码使用Delphi编写,等会我解析完算法,就可以换成其它语言了编写了。
函数 CellToRef有两个参数,X表示列号,Y表示行号,返回类型为字符串,如: CellToRef(1,1) 返回为 A1 。当然,这里的X,Y是从0开始还是从1开始要你自己界定。
内嵌函数GetRef有一个参数,X表示列号,当然在delphi,做为内嵌函数,这个参数是可以省掉的。返回值为字符串,功能为将一个数字列号转为相应的字符列号表示。如:GetRef(1)返回为 A。
算法解析: 我们知道英文字符有26个。即,A-Z(不使用小写形式的)。所以,对给写的数字X进行26进制的比较,
即 取整(I := token div 26;)与取余(R := token mod 26;)。之后判断是否整除,即:R = 0;如果没有整除,那么这个余数就做为结果中的一个字符了(Result:=Char(R + 64) + Result; 其中Char(R+64)为将数字+64之后转为英文字母)。如果可以整除,那么向结果中输出 Z (Result := 'Z' + Result ;) ,同时把数字X减去1(Dec(I));之后继续执行上述操作直到完全整除为止。
OK,结束了。
相关文章推荐
- Excel里数字列号转换为字符标签列
- gridview导出excel文件且把数字类型的列转换成字符导出(防止处理成科学计数法)
- excel 用宏将日期数字类型的列转换为字符文本列 c#导入excel 日期变成数字 怎么办?这是最好的解决办法
- 使用 apache poi 读取excel 把 数字转换成 字符
- [FUNC]Excel的列名称数字转换成字符convert column number to letter
- 字符串参数必须包含一个或者多个数字,函数应该把这些数字字符转换为整数并返回这个整数。如果字符串参数包含了任何非数字字符,函数就返回零
- Js-字符转换数字
- python中的字符数字之间的转换
- php导出数据到excel,防止身份证等数字字符格式变成科学计数的方法
- 5.单行函数,多行函数,字符函数,数字函数,日期函数,数据类型转换,数字和字符串转换,通用函数(case和decode)
- javascript十六进制数字和ASCII字符之间的转换方法
- 比较java与c语言中数字转换成字符的不同
- [No0000107]C#中 Excel列字母与数字的转换
- String to Integer (atoi)(将字符窜转换成数字)
- JavaScript的类型转换(字符转数字,数字转字符)
- POI读取Excel 各种特殊数字和类型的转换。
- 使用VBA对Excel中列名称与列号之间进行转换
- [Excel]将数字转换为X年X月X天
- 通过输入一串字符,首先判断这些字符是否全都是数字,不是的话程序结束;如果全是数字则转换为中文的大写表示
- leetcode excel表格列标题数字与字符串的转换