Hmm..
jetzt mal ungetested
Delphi-Quellcode:
Function IntToStringExcel(i: Integer): AnsiString;
Var
s: AnsiString;
Begin
If i < 27 Then
Begin
s := chr(i + pred(Ord('A')));
End
Else
Begin
s := chr((pred(i) Div 26) + pred(Ord('A'))) + chr((pred(i) Mod 26) + Ord('A'));
End;
InttoStringExcel := s;
End;
Dass funktioniert nur bis ZZ..
Bei neuen Excels geht es mit AAA weiter
Hab da mal was gebastelt, verwendbar für diverse BaseCodierungen.
Bei Excel musste mit nem OffSet gearbeitet werden.
Delphi-Quellcode:
function IntToBase(AValue: Integer; ABaseStr : string; Offset : integer = 0): string;
var
BaseCount : integer;
BasePos : integer;
begin
Result := '';
BaseCount := Length(ABaseStr);
if (AValue > Offset) then begin
while (AValue > 0) do begin
AValue := AValue - Offset;
BasePos := AValue mod BaseCount;
Result := ABaseStr[BasePos+1] + Result;
AValue := AValue div BaseCount;
end;
end else Result := ABaseStr[1];
end;
Excel (CollIndex > 0)
IntToBase(CollIndex, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',1)
HEX
IntToBase(IntValue, '0123456789ABCDEF')
Base8
IntToBase(IntValue, '01234567')