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 » Fr, 13.01.2012 12:42

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 » Fr, 13.01.2012 12:54

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 » Fr, 13.01.2012 12:59

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. » Fr, 13.01.2012 13:34

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. » Fr, 13.01.2012 14:04

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. » Fr, 13.01.2012 16:56

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: 7063
Registriert: Mo, 02.01.2006 19:48
Kontaktdaten:

Re: Makro Tabellen als csv exportieren

Beitrag von Karolus » Fr, 13.01.2012 17:17

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

Gruß Karo
AOO4, LO4.3, LO4.4 LinuxMint17.2

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

Re: Makro Tabellen als csv exportieren

Beitrag von Frieder D. » Fr, 13.01.2012 17:22

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

J.BORGER2

Re: CALC: Tabellen als csv exportieren

Beitrag von J.BORGER2 » Fr, 24.08.2018 07:03

Hallo,

Wie wähle ich die Filteroptionen so das ich die *.*CSV mit Felttrenner als ; wähle?

myProps(1).Name="FilterOptions"
myProps(1).Value ="47/9,34,76,1,1/1/2/1" 'string mit den Optionen <--- Hier muß ich doch dann die einstellungen vornehmen für den Feldtrenner ";"???

Der Quelltext geht aber hat bei mir alles in ein Feld :-(

Bitte um Hilfe und soory das ich das ganze noch mal hochschiebe... sitze schon seit 3 Tagen am Problem....

J.BORGER2

Re: CALC: Tabellen als csv exportieren

Beitrag von J.BORGER2 » Fr, 24.08.2018 07:31

myProps(1).Name="FilterOptions"
myProps(1).Value ="59,34,ANSI,1,,0,false,true,true" 'string mit den Optionen

So gehts :-)

Grade doch rausgefunden :-)

Noch eine Frage... wie kann ich den Dateinamen Flexibel speichern.... ist innerhalb der Exeltabele individuell zu übernehmen...?

Stephan
********
Beiträge: 10689
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: CALC: Tabellen als csv exportieren

Beitrag von Stephan » Fr, 24.08.2018 08:03

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

J.BORGER2

Re: CALC: Tabellen als csv exportieren

Beitrag von J.BORGER2 » Fr, 24.08.2018 09:30

Hi, danke für die Hilfe... leider Funktioniert es immer noch nicht.... bringt leider immer noch einen Laufzeitfehler....


Sub Speichern_CSV
Dim myProps(1) as New com.sun.star.beans.PropertyValue
sPath="D:\Rezeptur\"
sUrl = sPath & ThisComponent.Sheets(3).getCellRangeByName("A1").String & ".csv"
myProps(0).Name = "FilterName"
myProps(0).Value ="Text - txt - csv (StarCalc)"
myProps(1).Name="FilterOptions"
myProps(1).Value ="59,34,ANSI,1,,0,false,true,true" 'string mit den Optionen
myDoc = thisComponent
myDoc.storeAsUrl(sUrl,myProps())
End Sub

Hiker
****
Beiträge: 125
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: CALC: Tabellen als csv exportieren

Beitrag von Hiker » Fr, 24.08.2018 09:41

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.0.4.2 (Win8.1 Pro, Win 10 Pro) / Libre Office 4.2 (Win 7) / AOO (Win 7)

J.BORGER2

Re: CALC: Tabellen als csv exportieren

Beitrag von J.BORGER2 » Di, 28.08.2018 10:40

Hallo,

Hat jetzt alles super geklappt und möchte mich noch mal bedanken für die Hilfe...

Hätte noch eine kleine Frage:

Wie stelle ich es am besten an den inhalt von "sPath" in die Zwischenablage zu Kopieren?

(Prinzipel eine Varaibele in die Zwischenablage zu Kopieren, damit ich sie Programmübergreifend einfügen kann)

Antworten