🙏 Helfen Sie mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ 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