Libre Office

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

Alles zur Programmierung im LibreOffice.
Antworten
Proma
Beiträge: 54
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: 2720
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
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)

Proma
Beiträge: 54
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

Open Office
Antworten