CALC: Tabellen als csv exportieren

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

Moderator: Moderatoren

rici35
Beiträge: 8
Registriert: Do, 25.11.2010 15:16

CALC: Tabellen als csv exportieren

Beitrag von rici35 »

Hi,

ich bräuchte bitte ein kleines Makro welches mir die Tabellen aus meinen calc Dokument als text.csv Datei exportiert.

Mit / als Feldtrenner und " als Texttrenner.

Wer könnte mir da helfen?

Ich komme mit den staroffice Basic nicht zurecht.

Vielen Dank und viele Grüße

Richard



Moderation,4: verschoben in BASIC-Unterbereich, wo alle Makro-Fragen hin gehören; Betreff angepasst
Benutzeravatar
lorbass
********
Beiträge: 4116
Registriert: Mo, 01.05.2006 21:29
Wohnort: Bonn

Re: Makro Tabellen als csv exportieren

Beitrag von lorbass »

Wieso brauchst du dafür ein Makro? Funktioniert bei dir Datei > Speichern unter… mit Dateityp Text CSV (csv) nicht?

Gruß
lorbass
rici35
Beiträge: 8
Registriert: Do, 25.11.2010 15:16

Re: Makro Tabellen als csv exportieren

Beitrag von rici35 »

Hi,

doch, dass funktioniert schon. Ich möchte das allerdings alles über Script steuern, dafür benötige ich ein Makro.

Viele Grüße

Rici
Frieder D.
****
Beiträge: 115
Registriert: Di, 10.01.2012 10:51
Kontaktdaten:

Re: Makro Tabellen als csv exportieren

Beitrag von Frieder D. »

Hallo rici35
Hier findest du ein Beispiel:

http://www.starbasicfaq.de/filteroption ... eroptionen

und hier findest du die Einstellungen:
http://wiki.services.openoffice.org/wik ... er_Options

Und der Code für "/" ist 47

Gruß Frieder
Frieder D.
****
Beiträge: 115
Registriert: Di, 10.01.2012 10:51
Kontaktdaten:

Re: Makro Tabellen als csv exportieren

Beitrag von Frieder D. »

Hallo
Ich habe es dir gerade mahl mit deinen Angaben erstellt.
Allerdings speichert es immer nur die aktuell-aktive Tabelle als CSV.
Hier der Code:

Code: Alles auswählen

Sub Speichern_CSV
Dim myProps(1) as New com.sun.star.beans.PropertyValue
sPath="C:\Users\Nansen\Desktop\CSVtest.csv"
sUrl=ConvertToUrl (sPath)
myProps(0).Name = "FilterName"
myProps(0).Value ="Text - txt - csv (StarCalc)"
myProps(1).Name="FilterOptions"
myProps(1).Value ="47/9,34,76,1,1/1/2/1" 'string mit den Optionen
myDoc = thisComponent
myDoc.storeAsUrl(sUrl,myProps())
End Sub
Gruß Frieder
Frieder D.
****
Beiträge: 115
Registriert: Di, 10.01.2012 10:51
Kontaktdaten:

Re: Makro Tabellen als csv exportieren

Beitrag von Frieder D. »

Hallo

Ich habe dir hier das Makro so erweitert, dass es alle Tabellen des Dokuments einzeln als CSV-Datei exportiert.

Code: Alles auswählen

Sub Speichern_CSV
Dim myDoc As Object
Dim sPath$ ,sUrl$
dim i%
Dim myProps(1) as New com.sun.star.beans.PropertyValue
  myDoc = thisComponent
  sPath="C:\Users\Nansen\Desktop\"
  for i=0 To myDoc.Sheets.getcount -1
    oSheet=myDoc.Sheets(i)
    myDoc.CurrentController.setActiveSheet(oSheet)
    
    sUrl = sPath & "CSVtable" & (i + 1) & ".csv"
    sUrl=ConvertToUrl (sUrl)
    
    myProps(0).Name = "FilterName"
    myProps(0).Value ="Text - txt - csv (StarCalc)"
    myProps(1).Name="FilterOptions"
    myProps(1).Value ="47/9,34,76,1,1/1/2/1" 'string mit den Optionen
    
    myDoc.storeAsUrl(sUrl,myProps())
  Next
End Sub
Gruß Frieder
Karolus
********
Beiträge: 7431
Registriert: Mo, 02.01.2006 19:48

Re: Makro Tabellen als csv exportieren

Beitrag von Karolus »

Hallo
Die Zuweisung von 'MyProps' wäre vor dem 'for...next'-Block besser aufgehoben.

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Frieder D.
****
Beiträge: 115
Registriert: Di, 10.01.2012 10:51
Kontaktdaten:

Re: Makro Tabellen als csv exportieren

Beitrag von Frieder D. »

Hallo Karo
Karolus hat geschrieben:Die Zuweisung von 'MyProps' wäre vor dem 'for...next'-Block besser aufgehoben.
Danke hast recht. Habe ich vorhin einfach übersehen.
hier die verbesserte Version:

Code: Alles auswählen

Sub Speichern_CSV
Dim myDoc As Object
Dim sPath$ ,sUrl$
dim i%
Dim myProps(1) as New com.sun.star.beans.PropertyValue
  myDoc = thisComponent
  sPath="C:\Users\Nansen\Desktop\"
  
  myProps(0).Name = "FilterName"
  myProps(0).Value ="Text - txt - csv (StarCalc)"
  myProps(1).Name="FilterOptions"
  myProps(1).Value ="47/9,34,76,1,1/1/2/1" 'string mit den Optionen
    
  for i=0 To myDoc.Sheets.getcount -1
    oSheet=myDoc.Sheets(i)
    myDoc.CurrentController.setActiveSheet(oSheet)
    
    sUrl = sPath & "CSVtable" & (i + 1) & ".csv"
    sUrl=ConvertToUrl (sUrl)
    
    myDoc.storeAsUrl(sUrl,myProps())
  Next
End Sub
Gruß Frieder
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: CALC: Tabellen als csv exportieren

Beitrag von Stephan »

Code: Alles auswählen

sUrl = sPath & ThisComponent.Sheets(0).getCellRangeByName("A1").String & ".csv"
übernimmt als Namen den Text in Zelle A1 der ersten Tabelle des aktuellen Calc-Dokumernts.


GRuß
Stephan
Hiker
******
Beiträge: 590
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: CALC: Tabellen als csv exportieren

Beitrag von Hiker »

Hallo,

schau noch Mal in das Macro oben, dort gibt es einen ConvertToUrl-Aufruf, der aus einem Dateinamen eine URL (in diesem Fall mit File:// ) macht. Der fehlt bei Dir.

Ausprobieren kann ich es gerade leider nicht.

Mfg, Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Kara1983
Beiträge: 2
Registriert: Mi, 30.11.2016 16:09

Re: CALC: Tabellen als csv exportieren

Beitrag von Kara1983 »

Hallo
auch wenn der Beitrag schon etwas älter ist, hoffe ich ihr könnte mir helfen

das Makro klappt super, jedoch würde ich gern die Tabellen mit ihrem Tabellenamen speichern.
Kann mir bite einer sagen wie ich das hierfür änern muss

Danke :)
Hiker
******
Beiträge: 590
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: CALC: Tabellen als csv exportieren

Beitrag von Hiker »

Hallo,

http://www.dannenhoefer.de/faqstarbasic ... l#Zweig203

Also einfach über das .name-Attribut des aktuellen Sheets.

Achtung: Wenn im Tabellennamen Zeichen verwendet werden, die für Dateien nicht erlaubt sind, geht das nicht so einfach...

Mfg, Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Antworten