Seite 1 von 1

setDataArray und Zeilenumbrüche

Verfasst: Di 23. Feb 2016, 22:01
von mikele
Hallo,

die Methode setDataArray() hat bei mir (Linux, LO4.4.7 und 5.03) die seltsame Eigenschaft offenbart, Zeilenumbrüche innerhalb von Zellen zu vernichten.
Ist (der Einfachheit halber) in A1 ein zweizeiliger Text, so wird per

Code: Alles auswählen

Sub Main
	odoc=thiscomponent
	ocells=odoc.sheets(0).getcellrangebyname("a1")
	atxt=ocells.getdataarray()
	ocells.setdataarray(atxt)
End Sub
daraus ein einzeiliger Text (intern wird aus dem Umbruch 0A der Umbruch 0D).
Für eine einzelne Zelle wäre das unproblematisch über den String der Zelle zu umgehen, aber für ganze Zellbereiche ist es ärgerlich.
Könnt ihr das Verhalten bestätigen? Ist es ein Bug oder verstehe ich es nicht richtig?

Re: setDataArray und Zeilenumbrüche

Verfasst: Di 23. Feb 2016, 23:28
von gogo
jo - ist bei mir auch so.
Abhilfe schafft der Dispatcher ... bei allen "Nachteilen" braucht man ihn von Zeit zu Zeit:

Modifiziert nach Andrew Pitonyak/Volker Lenhardt (https://www.uni-due.de/~abi070/files/OO ... eutsch.pdf)

Code: Alles auswählen

oDoc1= thisComponent
oDispatcher=CreateUnoService("com.sun.star.frame.DispatchHelper")
oFrame1=oDoc1.CurrentController.Frame

' Die Zellen A1:B2 werden über den Controller ausgewählt.
oSheet=oDoc1.Sheets(0)
rng=oSheet.getCellRangeByName("A1:B2")
oDoc1.CurrentController.select(rng)

' Mit einem Dispatch-Befehl wird in die Zwischenablage kopiert.
oDispatcher.executeDispatch(oFrame1,".uno:Copy","",0,Array())

' Auswahl der oberen linken Ecke zum Einfügen der Daten.
rng=oDoc1.Sheets(0).getCellRangeByName("F5")

' Erst wird der Viewcursor dort platziert, dann wird aus der Zwischenablage eingefügt.
oDoc1.CurrentController.select(rng)
oFrame2=oDoc1.CurrentController.Frame
oDispatcher.executeDispatch(oFrame2,".uno:Paste","",0,Array())

Re: setDataArray und Zeilenumbrüche

Verfasst: Mi 24. Feb 2016, 00:37
von karolus
Hallo

Falls da keine "echten" Formeln im Weg sind, kann man das Problem mit ...setFormulaArray beseitigen.

Im übrigen geht auch Copy&paste mit Api-methoden ohne Dispatcher-geschwurbel -- man müsste halt mal bei Dannenhöfer nachschauen. http://www.dannenhoefer.de/faqstarbasic ... l#Zweig197

Karolus