Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Excel-Export, RefToCell, Spalten>26 (https://www.delphipraxis.net/137523-excel-export-reftocell-spalten-26-a.html)

hoika 22. Jul 2009 18:30


Excel-Export, RefToCell, Spalten>26
 
Hallo #,

die folgende Funktion liefert das benötigte A1
für die Zellen beim Excel-Export zurück.
(bZeroRow ist für Columns-Methoden)

Delphi-Quellcode:
function RefToCell(ARow, ACol: Integer;
  const bZeroRow: Boolean = False): string;
var
  sCol: String;
  sRow: String;
begin
  sCol:= Chr(Ord('A') + ACol - 1);
  if bZeroRow then
  begin
    sRow:= '';
  end
  else
  begin
    sRow:= IntToStr(ARow);
  end;
 
  Result := sCol + sRow;
end;
Die Spalte 27 ist ja AA.
Das kann die Funktion aber nicht.

Hat die jemand schon mal implementiert ?


Heiko

HiWieGehts 22. Jul 2009 19:28

Re: Excel-Export, RefToCell, Spalten>26
 
Hallo,
Excel-Zellen können nicht nur über a1 usw. angesprochen werden. Es gibt auch die Möglichkeit, die Zellen über C1, R1 usw zu adressieren.
zu deiner Frage: probier ACol DIV 26 für das 1. Zeichen und ACol MOD 26 für das 2. Zeichen

hoika 22. Jul 2009 19:36

Re: Excel-Export, RefToCell, Spalten>26
 
Hallo,

auf dem Weg zum Döner habe ich mir das mit dem mod und div auch überlegt ;)

Danke


Heiko

Chemiker 22. Jul 2009 20:42

Re: Excel-Export, RefToCell, Spalten>26
 
Hallo hoika,

dieser Link könnte Dir weiter helfen:

Excel-Export

Bis bald Chemiker

hoika 23. Jul 2009 07:10

Re: Excel-Export, RefToCell, Spalten>26
 
Hallo,

der Link war goldrichtig !
Die neue Ref-Methode funktioniert perfekt (sagen meine Unit-Tests).

Danke


Heiko

tekkyeah 27. Jan 2012 18:58

AW: Excel-Export, RefToCell, Spalten>26
 
Delphi-Quellcode:
  if col < 26 then
  begin
    Result := Chr(Ord('A') + Col - 1) + IntToStr(Row);
  end else
  begin
    Result := Chr((Col DIV 26) - 1 + Ord('A')) +
              Chr((Col MOD 26) + Ord('A')) + IntToStr(Row);
  end;

himitsu 28. Jan 2012 00:03

AW: Excel-Export, RefToCell, Spalten>26
 
Schon ganz schön alt der Thread?
Aber die Antwort aus Post #2 hast'e gut aufgezeigt.
Wäre nur praktisch, wenn deine Umsetzung korrekt wäre. :zwinker:
Zitat:

A1
B1
...
X1
Y1
AA1
AB1
...
Oder sieht diese Folge richtig aus?
Tipp: 27 oder <=




Ein Einzeiler:
Delphi-Quellcode:
Result := IfThen(Col > 26, Chr(Ord('A') + (Col - 27) div 26), '') + Chr(Ord('A') + (Col - 1) mod 26) + IntToStr(Row);

Oder etwas übersichtlicher:
Delphi-Quellcode:
function RefToCell(Row, Col: Integer; WithRow: Boolean = False): string;
begin
  Dec(Col, 1);
  Result := Chr(Ord('A') + Col mod 26);
  if Col >= 26 then
    Result := Chr(Ord('A') + Col div 26 - 1) + Result;
  if WithRow then
    Result := Result + IntToStr(Row);
end;

Blup 31. Jan 2012 13:06

AW: Excel-Export, RefToCell, Spalten>26
 
Oder getrennt:
Delphi-Quellcode:
function RefToColumn(ACol: Integer): string;
const
  Basis = Ord('A');
  Range = Ord('Z') - Basis + 1;
begin
  Result := '';
  repeat
    Dec(ACol, 1);
    Result := Char(Basis + ACol mod Range) + Result;
    ACol := ACol div Range;
  until (ACol = 0);
end;

function RefToCell(ACol, ARow: Integer): string;
begin
  Result := RefToColumn(ACol) + IntToStr(ARow);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz