BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das OpenOffice Forum zu erhalten!
> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des OpenOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als OO-SUPPORTER gekennzeichnet. 🤗
Alles zur Programmierung im OpenOffice.org
-
karolus
- Beiträge: 651
- Registriert: Di 23. Feb 2010, 12:07
Beitrag
von karolus » Mo 6. Mär 2017, 12:42
Hallo
Es amüsiert mich immer wieder wie leicht sowas in python mit weniger API und weniger Codezeilen geht, und am Ende noch deutlich schneller läuft:
Code: Alles auswählen
def filter_selection(*_):
doc = XSCRIPTCONTEXT.getDocument()
sel = doc.CurrentSelection
data = sel.DataArray
out = []
for row in data:
if any(row) and not row in out:
out.append(row)
sel.clearContents(1+2+4+8+16)
sel[ :len(out) , : ].DataArray = out #LO>=5.1!!!
@struppi: wenn du den Zellbereich von 3 auf 13 Spalten erweiterst, musst du auch … dimArray(
12) tun.
-
mikele
- Beiträge: 774
- Registriert: Sa 23. Jul 2011, 22:09
Beitrag
von mikele » Mo 6. Mär 2017, 13:02
Hallo karolus,
cool!
Da kann ich weiter lernen. Schön, dass man unter Python sowas wie
machen kann. Unter Basic vermutete ich, dass der Filter schneller als eine Schleifenlösung wäre.
Würdest du mir
mal auseinandernehmen?
Gruß,
mikele
-
karolus
- Beiträge: 651
- Registriert: Di 23. Feb 2010, 12:07
Beitrag
von karolus » Mo 6. Mär 2017, 14:31
Hallo
Würdest du mir
mal auseinandernehmen?
In python gibts den sogenannten "slice"-zugriff auf diverse Containerobjekte: (Listen, tuple, Text ), nehmen wir zur Illustration einen Text:
Code: Alles auswählen
text = "abcdefghijk"
print(text) # →
'abcdefghijk'
print(text[:])#einfache Kopie →
'abcdefghijk'
print(text[:5])#bis 5.Zeichen(bis ausschliesslich index 5) →
'abcde'
print(text[5:])#ab ausschlisslich 5.Element bis Ende →
'fghijk'
print(text[::2])#jedes zweite ! →
'acegik'
print(text[::-1])# Kopie rückwärts →
'kjihgfedcba'
print(text[::-3])# rückwärts jedes dritte →
'kheb'
print(text[-4:])# die 4 hinteren →
'hijk'
Dieser Zugriff wurde mit LO5.1 in der pyuno-schnittstelle auch für den 2dimensionalen Zugriff auf Zellbereiche implementiert, und zwar wie
hier im Detail beschrieben
-
mikele
- Beiträge: 774
- Registriert: Sa 23. Jul 2011, 22:09
Beitrag
von mikele » Mo 6. Mär 2017, 19:11
Hallo karolus,
danke - nette Sache!
Gruß,
mikele