Daten aus Webquery bearbeiten

Alles zur Programmierung im LibreOffice.
Antworten
farmerjoe
Beiträge: 3
Registriert: Mi 12. Jun 2019, 10:31

Daten aus Webquery bearbeiten

Beitrag von farmerjoe » Mi 12. Jun 2019, 10:38

Hallo zusammen,
ich habe bereits ein paar Wochen mit LO und Entwicklungsumgebung rumgespielt, komme aber nicht auf eine Lösung :?

An sich "ganz einfach" :lol:

Ich möchte Daten per Webquery aus importieren, jedoch vorher bearbeiten, da u.a. die HTML Formatierung oder Links enthalten sind.

Hab dazu dieses Script gefunden was wunderbar funktioniert

Code: Alles auswählen

sub webqry

	dim doc as object
	dim dis as object

	doc = ThisComponent.CurrentController.Frame
	dis = createUnoService("com.sun.star.frame.DispatchHelper")
	dim arg(2) as new com.sun.star.beans.PropertyValue
	arg(0).Name  = "FileName"
	arg(0).Value = "<url>"
	arg(1).Name  = "FilterName"
	arg(1).Value = "calc_HTML_WebQuery"
	arg(2).Name  = "Source"
	arg(2).Value = "HTML_3"

	dis.executeDispatch(doc, ".uno:InsertExternalDataSource", "", 0,arg())

end sub
Nun dachte ich mir das ich statt die Daten in mein Dokument (doc) einfach in ein Array werfe und dann den Rest entsprechend ändere, aber irgendwie bekomme ich das nicht hin.
Die Frage ist ob das überhaupt geht bzw. wie es gehen könnte wenn es so nicht geht.

Da ich am Ende nicht nur diese eine Seite importieren und bearbeiten wollen würde, sondern mehrere müsste man das auch noch durch Webquery noch durch eine Schleife jagen, aber glaub das ist dann eher ein kleineres Problem.. wenn das natürlich schon irgendjemand hätte: noch besser :shock:

Vermutlich müsste man die entsprechenden URLs die man auslesen will in einem Array speichern und dann dieses Array durchgehen usw.

Bin gespannt ob ihr mir helfen könnt.

Vielen Dank :geek:

/edit

Mir fiel grad auf das ich evt. Array mit Recordset verwechselt habe :?:

F3K Total
Beiträge: 1816
Registriert: So 10. Apr 2011, 10:10

Re: Daten aus Webquery bearbeiten

Beitrag von F3K Total » Mi 12. Jun 2019, 17:02

Moin,
farmerjoe hat geschrieben:
Mi 12. Jun 2019, 10:38
Ich möchte Daten per Webquery aus importieren, jedoch vorher bearbeiten, da u.a. die HTML Formatierung oder Links enthalten sind.
Ich würde das anders herum machen, die nach Calc importierten Daten aus dem entsprechenden dataArray des Tabellenblattes auslesen, bearbeiten, und in ein neues Blatt hineinschreiben.

Beispiel:
  • Nimm eine leere Calc-Datei
  • nenne das erste Tabellenblatt IMPORT
  • nenne das zweite Tabellenblatt RAW_DATA
  • Führe das folgende Makro webqry aus

Code: Alles auswählen

sub webqry
	dim doc as object
	dim dis as object
	doc = ThisComponent.CurrentController.Frame
	dis = createUnoService("com.sun.star.frame.DispatchHelper")
	dim arg(2) as new com.sun.star.beans.PropertyValue
	arg(0).Name  = "FileName"
	arg(0).Value = "http://www.xe.com/currencycharts"
	arg(1).Name  = "FilterName"
	arg(1).Value = "calc_HTML_WebQuery"
	arg(2).Name  = "Source"
	arg(2).Value = "HTML__crLive"
	dis.executeDispatch(doc, ".uno:InsertExternalDataSource", "", 0,arg())
    Copy_Raw_Data
end sub

Sub Copy_Raw_Data
    oIMPORTSheet = ThisComponent.Sheets.IMPORT
    oCursor = oIMPORTSheet.CreateCursor
    oCursor.gotoStart
    oCursor.gotoEndofUsedArea(true)
    oIMPORTRange = oCursor.RangeAddress
    aData = oCursor.dataarray
    oRAW_DATASheet = ThisComponent.Sheets.RAW_DATA
    oRAW_DATARange = oRAW_DATASheet.getcellRangebyposition(oIMPORTRange.Startcolumn,oIMPORTRange.StartRow,oIMPORTRange.Endcolumn,oIMPORTRange.EndRow)
    oRAW_DATARange.setdataarray(aData)
end Sub
Danach sollten im zweiten Tabellenblatt die rohen Daten stehen, die du natürlich nach Lust und Laune,"ganz einfach" :lol: formatieren kannst.
Gruß R

farmerjoe
Beiträge: 3
Registriert: Mi 12. Jun 2019, 10:31

Re: Daten aus Webquery bearbeiten

Beitrag von farmerjoe » Do 13. Jun 2019, 09:10

Guten Morgen,
das ist natürlich auch eine Möglichkeit, gar nicht in Betracht gezogen :idea:

Funktioniert, hätte dich vermutlich auch gewundert wenn nicht ;)

Ein paar Fragen hätte ich aber noch :D

1. Wenn ich webqry jetzt im Loop laufen lassen möchte, muss ich mir nur einen bauen - glaub das bekomme ich hin (hoffe ich) - jedoch bräuchte ich ein Array? in dem ich die entsprechenden Werte hinterlegen kann.. einerseits die URLs und andererseits die Zieltabellenblätter. Würde es ggf. mehr Sinn machen wenn man dieses statt im Quelltext in ein Array schreibt, evt. auf einem Tabellenblatt speichert und ausliest?
2. Aus alten Excel Zeiten habe ich mir angewöhnt Macros aufzunehmen um an den enstprechenden Quelltext zu kommen.. hier wird nun jedoch eine "Tonne" produziert von dem ich nicht genau weiß was ich alles brauch und was nicht. An sich wollte ich nur einen Wert ersetzen und eine Zeile (Überschrift/Zeile 1 löschen). Vermutlich - wegen der Programmiersprache - geht es aber nicht anders.

Mfg

F3K Total
Beiträge: 1816
Registriert: So 10. Apr 2011, 10:10

Re: Daten aus Webquery bearbeiten

Beitrag von F3K Total » Do 13. Jun 2019, 17:28

Moin,
wie/wo du die URL's speicherst, ob auf einem Tabellenblatt oder im Quelltext ist doch egal, was die besser passt.
An sich wollte ich nur einen Wert ersetzen und eine Zeile (Überschrift/Zeile 1 löschen)
Tja, so ist das, wenn man das Problem nur umreißt.
Wenn du genau beschreiben würdest, welche Werte du von wo, wohin schreiben möchtest, wäre vielleicht eine ganz einfache Lösung möglich.
Da du uns aber dermaßen im Nebel stochern läßt, und unsere Glaskugeln Urlaub machen, wird es damit wohl schwierig.
Am Besten lädst du eine Beispieldatei hoch an der du dein Ziel beschreibst. URL's ins Web inbegriffen!

Gruß R

farmerjoe
Beiträge: 3
Registriert: Mi 12. Jun 2019, 10:31

Re: Daten aus Webquery bearbeiten

Beitrag von farmerjoe » Mo 17. Jun 2019, 09:09

Guten Morgen,
ach so, ja, klar - kein Problem.
Ich hab glaub noch nie nach Code gefragt - außer vielleicht einen Kollegen - daher wusste ich nicht ob man seine Probleme nur theoretisch beschreibt anstatt einfach eine Tabelle "hinzuklatschen" mit "macht mal das es geht".

Also, darum geht es: Magic, the Gathering Karten :ugeek:

Ich würde jetzt gern die Seiten vom Tabellenblatt DAT nacheinander in das Tabellenblatt IMP importieren und nur die Werte (keine Formatierungen o.ä.) ab Zeile 2 in das jeweilige Tabellenblatt zur zugehörigen Seite (hier TMP, jeweils zweite Spalte auf Tabellenblatt DAT) übernehmen.

Zauberhaft wäre es wenn es das " EUR" in Spalte 4 der Werte dann entsprechend schon entfernen würde, wenn nicht - nicht so wild, dann kommt da eben noch eine Formel ran ;)

Am Ende kann ich dann recht unkompliziert meine bisherigen/neuen Karten bepreisen usw.
Andere Onlineseiten rufen teilweise Preise jenseits von Gut und Böse auf, hier nehme ich sie von einem lokalen Laden in Berlin - da ist schon wesentlich realistischer.. zumindest für das was ich mache :lol:

Mfg
magic.ods
(30.68 KiB) 7-mal heruntergeladen

Antworten