[Gelöst] Spalte verschieben, Buchstaben voran stellen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

retuwe61
****
Beiträge: 159
Registriert: So, 18.11.2007 21:25

[Gelöst] Spalte verschieben, Buchstaben voran stellen

Beitrag von retuwe61 »

Hallo miteinander.
Kann man bereits beim Verschieben des Spalteninhaltes den Buchstaben "n" voranstellen?
Gruß
Uwe

Code: Alles auswählen

Sub Spalte_verschieben
oDoc = thisComponent
oQuellBlatt = oDoc.Sheets.getByName ("Filter1")
oCellCursor = oQuellBlatt.createCursor
oCellCursor.GotoEndOfUsedArea(True)
letzte_Zeile = oCellCursor.getRangeAddress.EndRow 
letzte_Spalte= oCellCursor.getRangeAddress.EndColumn
oRange=oQuellBlatt.getCellRangeByPosition(0,0,0,letzte_Zeile)
oQuellRangeAddresse = oRange.getRangeAddress
aDat = oRange.getDataArray
oRange.clearContents(com.sun.star.sheet.CellFlags.VALUE+com.sun.star.sheet.CellFlags.STRING+com.sun.star.sheet.CellFlags.FORMULA)
oZielBlatt = oDoc.Sheets.getByName ("Filter2")
oZielRange = oZielBlatt.getCellRangeByPosition(1,0,1,letzte_Zeile)
oZielRange.setDataArray(aDat)

oErsetzen = oZielRange.createReplaceDescriptor()
oErsetzen.SearchString = "^."
oErsetzen.ReplaceString = "n&"
oErsetzen.SearchRegularExpression = True
oZielRange.ReplaceAll( oErsetzen )
End Sub
Zuletzt geändert von retuwe61 am Mi, 08.02.2012 21:41, insgesamt 1-mal geändert.
Angewandt wird LibeOffice Version 5.1.6.2
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Spalte verschieben, Buchstaben voran stellen

Beitrag von turtle47 »

Hallo Uwe,

ersetze mal

Code: Alles auswählen

oErsetzen.ReplaceString = "n&"
durch

Code: Alles auswählen

oErsetzen.ReplaceString = "n" & "&"
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Spalte verschieben, Buchstaben voran stellen

Beitrag von Karolus »

Hallo
turtle47 hat geschrieben:Hallo Uwe,

ersetze mal

Code: Alles auswählen

oErsetzen.ReplaceString = "n&"
durch

Code: Alles auswählen

oErsetzen.ReplaceString = "n" & "&"
Jürgen
Wieso, die obere Zeile tut doch genau das Gleiche - hier funktioniert der code von retuwe.
oder sollen wir die Frage auf dem Wort "beim" betonen?
Kann man bereits beim Verschieben des Spalteninhaltes den Buchstaben "n" voranstellen?
Edit: In Python gehts relativ einfach 'adat' vor dem ...setDataArray entsprechend zu ändern, in Basic ist mir Ummodelei der Arrayelemente zu blöd.
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
retuwe61
****
Beiträge: 159
Registriert: So, 18.11.2007 21:25

Re: Spalte verschieben, Buchstaben voran stellen

Beitrag von retuwe61 »

Hallo Ihr beiden,
sorry, falls ich mich ungenau ausgedrückt haben sollte. Richtig, die Betonung liegt auf dem "beim Verschieben".
Ich hatte gehofft, dass die von dir für Python beschriebene Verfahrensweise auch unter Basic (leicht?) umgesetzt werden könnte.
VG
Uwe
Angewandt wird LibeOffice Version 5.1.6.2
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Spalte verschieben, Buchstaben voran stellen

Beitrag von DPunch »

Servus
Karolus hat geschrieben:in Basic ist mir Ummodelei der Arrayelemente zu blöd.
Wie meinst Du das? Vielleicht verstehe ich hier was fundamental falsch, aber viel einfacher als

Code: Alles auswählen

(...)
For i=0 To UBound(aDat)
	aDat(i)(0) = "n" & aDat(i)(0)
Next i
oZielRange.setDataArray(aDat)
dürfte es auch in Python (oder sonstwo) nicht gehen.
retuwe61
****
Beiträge: 159
Registriert: So, 18.11.2007 21:25

Re: [Gelöst] Spalte verschieben, Buchstaben voran stellen

Beitrag von retuwe61 »

Vielen Dank.
Gruß
Uwe
Angewandt wird LibeOffice Version 5.1.6.2
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Spalte verschieben, Buchstaben voran stellen

Beitrag von Karolus »

Hallo
DPunch hat geschrieben:Servus
Karolus hat geschrieben:in Basic ist mir Ummodelei der Arrayelemente zu blöd.
Wie meinst Du das? Vielleicht verstehe ich hier was fundamental falsch, aber viel einfacher als

Code: Alles auswählen

(...)
For i=0 To UBound(aDat)
	aDat(i)(0) = "n" & aDat(i)(0)
Next i
oZielRange.setDataArray(aDat)
dürfte es auch in Python (oder sonstwo) nicht gehen.
Deine Schleife geht nur bei einer "einspaltigen" aDat, in Python ginge das gleich über eine unbestimmte Anzahl von Spalten in aDat:

Code: Alles auswählen

    outDat = [ ]
    for line in aDat:
        outDat.append([ "n%s" % elem for elem in line ])
    aDat = tuple( tuple( line ) for line in outDat )
oder kompakt :

Code: Alles auswählen

    outDat =[[ "n%s" % elem for elem in line ] for line in aDat]
    aDat = tuple( tuple( line ) for line in outDat )
Ich häng mal die ganze Übersetzung in Python hier an.
python_move_replace.ods
(11.57 KiB) 77-mal heruntergeladen
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: [Gelöst] Spalte verschieben, Buchstaben voran stellen

Beitrag von DPunch »

Servus
Karolus hat geschrieben:Deine Schleife geht nur bei einer "einspaltigen" aDat, in Python ginge das gleich über eine unbestimmte Anzahl von Spalten in aDat:
Wenn es darum geht, einfach nur ein "n" voranzustellen, ist das doch auch bei mehrspaltigen DataArrays überhaupt kein Thema

Code: Alles auswählen

	For lineCounter=0 To UBound(aDat)
		For columnCounter=0 To UBound(aDat(lineCounter))
			aDat(lineCounter)(columnCounter) = "n" & aDat(lineCounter)(columnCounter)
		Next columnCounter
	Next lineCounter
Komplizierter wird es nur, wenn man tatsächlich eine eigene Spalte voranstellen will, da würde man tatsächlich ein bisschen hantieren müssen, wenn es unbedingt in einem Array sein soll.
Antworten