JooWI Online LogoFür mein Projekt JooWI Online exportiere ich von Zeit zu Zeit die Elemente aus meiner Projektverwaltungssoftware eGroupWare (Anzeige) als CSV-Datei. Diese beinhaltet jedoch sehr viele Daten, welche ich zur späteren Verwendung auf der Homepage nicht benötige.

 

 

Egroupware Logo

 

Grundsätzlich sind mir die Spalten Titel, Verantwortlicher, Datum und Status wichtig.

 

Nachdem ich die entsprechende Ansicht in eGroupWare exportiert habe, importiere ich die Datei in LibreOffice Calc mit den entsprechenden Einstellungen.

 

Da ich bereits Erfahrung mit Excel Makros (VBA) habe, hätte ich nicht gedacht, dass mir StarBasic so schwer fällt. Leider gibt es auch nicht annähernd so viele Google Ergebnisse zu eventuellen Themen/Problemen.

 

Aber soweit funktionieren die Sachen, welche ich benötige.

 

LibreOffice Makros beginnen ähnlich VBA mit SUB sowie den Namen des Makros. Em Ende muss Sub auch wieder geschlossen werden.

REM ***** BASIC *****

Sub ModifyDataInProject
...
End Sub

 

Alle Teile ab hier müssen sich innerhalb der SUB-Funktion befinden!

Im ersten Teil entferne ich schlichtweg nicht benötigte Spalten:

osheet = thisComponent.sheets("Tabelle1")
ocursor = osheet.createCursor
ocursor.gotoendofusedarea(false)
nEndRow = ocursor.rangeaddress.EndRow

columns = osheet.getColumns
rows = osheet.getRows

' remove not required columns
columns.removeByIndex(0, 2)
columns.removeByIndex(1, 6)
columns.removeByIndex(4, 2)
columns.removeByIndex(5, 10)

 

Anschließend gehts an die nicht benötigten Zeilen:

	' remove not required rows
' NOTE count i only if no row was removed
rows.removeByIndex(0, 2)
i = 0
while osheet.getcellbyposition(0,i).string <> ""
  if InStr(osheet.getcellbyposition(2,i).string,"timesheet") = 1 then
    rows.removeByIndex(i, 1)
  else
    i = i+1
  endif
wend
' remove not required columns
columns.removeByIndex(2, 1)

' remove time from date column
i = 0
while osheet.getcellbyposition(0,i).string <> ""
  if osheet.getcellbyposition(3,i).string = "100%" then
    osheet.getcellbyposition(2,i).string = left(osheet.getcellbyposition(2,i).string, 10)
  else
    osheet.getcellbyposition(2,i).string = ""
  end if
  i = i+1
wend

Kurze Beschreibung:

  • Als erstes werden die ersten beiden Zeilen gelöscht.
  • Anschließend läuft eine WHILE Schleife alle verfügbaren Zeilen durch (bis Spalte A einma leer ist)
  • Hier wird dann abgefragt, ob der Wert der 3. Spalte "timesheet" entspricht. Diese wird gelöscht, ansonsten wird einfach weitergemacht.
  • Dann wird die Hilfsspalte wo "timesheet" drin stand, bzw. der Typ des Elements, gelöscht
  • Nun läuft erneut die gleiche WHILE Schleife, in welcher das Datumfeld modifiziert wird, sofern die Status-Spalte 100% entspricht. Ansonsten trägt das Script nichts in die Spalte. Das Datum wurde inkl. Zeit exportiert, welche ich jedoch nicht möchte.

 

Am Ende ersetze ich noch die IDs der Verantwortlichen (werden leider nur als ID Exportiert) durch die realen Namen. (IDs wurden geändert)

' insert names instead of integers
i = 0
while osheet.getcellbyposition(0,i).string <> ""
  select case osheet.getcellbyposition(1,i).string
    case "4", "4, -8", "-8, 4"
      osheet.getcellbyposition(1,i).string = "Roland Meier"
    case "7", "7, -8", "-8, 7"
      osheet.getcellbyposition(1,i).string = "Norbert Schad"
    case "4, 7", "7, 4", "-8, 7, 4", "-8, 4, 7", "4, -8, 7", "4, 7, -8", "7, 4, -8", "7, -7, 4"
      osheet.getcellbyposition(1,i).string = "Roland Meier,"&Chr(13)&"Norbert Schad"
  end select
  i = i+1
wend

 

Vielleicht ist ja die ein oder andere Zeile für jemanden ganz hilfreich.

 

Kommentar schreiben
Ich habe den Datenschutz gelesen. Ich stimme zu, dass meine Angaben und Daten zur elektronisch erhoben und gespeichert werden. Alternativ kann ich als Namen auch ein Pseudonym eintragen. Hinweis: Sie können Ihre Einwilligung jederzeit für die Zukunft per E-Mail an widerrufen.

JooWI Online

JooWI Online Warenwirtschaft

JooWI ist eine auf Joomla basierende Warenwirtschafts Anwendung.
Weitere Infos auf der Projekthomepage.

Bestellen Sie noch heute die 30 Tage GRATIS Ultimate Version!

Follow Me

Web: medialekt.de

Mail: