![]() |
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:
Die Spalte 27 ist ja AA.
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; Das kann die Funktion aber nicht. Hat die jemand schon mal implementiert ? Heiko |
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 |
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 |
Re: Excel-Export, RefToCell, Spalten>26
|
Re: Excel-Export, RefToCell, Spalten>26
Hallo,
der Link war goldrichtig ! Die neue Ref-Methode funktioniert perfekt (sagen meine Unit-Tests). Danke Heiko |
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; |
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:
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; |
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