🙏 Bitte helfen Sie uns das LibreOffice Forum zu erhalten. 🙏
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.

🍀 Wir hoffen auf Ihre Unterstützung - vielen Dank!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Calc-Tabelle: Spalten-NAMEN umwandeln in Spalten-INDEX (z.B. "C" in 2)

Alles zur Programmierung im LibreOffice.
Antworten
Proma
Beiträge: 37
Registriert: Di 24. Sep 2024, 16:53

Calc-Tabelle: Spalten-NAMEN umwandeln in Spalten-INDEX (z.B. "C" in 2)

Beitrag von Proma » Do 10. Okt 2024, 12:45

Hallo liebe Experten,

kürzlich habe ich hier https://de.openoffice.info/viewtopic.php?t=77152 eine Function von Karolus entdeckt, mit deren Hilfe der Spalten-Index (z.B. 2) in den Spalten-Namen (z.B. "C") umgewandelt werden kann. Nun hätte ich gerne eine Lösung für den umgekehrten Weg, also wie ich vom Spalten-Namen zum Spalten-Index gelangen kann. Ich habe mir schon die Finger wund gegoogelt aber nirgendwo etwas Passendes gefunden.

Meine Ausstattung:
Windows 11,
LibreOffice 24.2

Vorab vielen Dank für Eure Unterstützug und liebe Grüße
vom Martin

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2533
Registriert: Fr 10. Dez 2010, 10:01

Re: Calc-Tabelle: Spalten-NAMEN umwandeln in Spalten-INDEX (z.B. "C" in 2)

Beitrag von karolus » Do 10. Okt 2024, 16:57

Hallo

Code: Alles auswählen

doc = XSCRIPTCONTEXT.getDocument()
address = doc.Sheets[0].Columns["ABZ"].RangeAddress
print(address.StartColumn)
oder brav als Basic-Code:

Code: Alles auswählen

Sub Main
	print col_index("ABC")

End Sub

function col_index( col_name )
	sheet = thisComponent.Sheets(0)
	column = sheet.Columns.getByName( col_name )
	address = column.RangeAddress
	col_index = address.StartColumn
end function
und mit nativen python-mitteln ohne den Umweg über die LO-API:

Code: Alles auswählen

from string import ascii_uppercase as alphabet

alphabet = f"_{alphabet}"

def name2index( name ):
    name = reversed(name.upper())
    return sum(alphabet.index(char) * 26**exponent
               for exponent, char in enumerate(name)) - 1
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Proma
Beiträge: 37
Registriert: Di 24. Sep 2024, 16:53

Re: Calc-Tabelle: Spalten-NAMEN umwandeln in Spalten-INDEX (z.B. "C" in 2)

Beitrag von Proma » Do 10. Okt 2024, 19:37

Hallo Karolus,

großartig! Vielen Dank für die schnelle und ausführliche Antwort; das hilft mir nicht nur bei meinem momentanen Problem weiter sondern gibt mir auch Anregung für weitere Nachforschungen.

Vielen Dank und liebe Grüße
vom Martin


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten