Export als cvs

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Benutzeravatar
lorbass
********
Beiträge: 4116
Registriert: Mo, 01.05.2006 21:29
Wohnort: Bonn

Re: Export als cvs

Beitrag von lorbass »

Karsten Hahn hat geschrieben:das Dokument (kalkulation.ods) ist im Laufe der Zeit auf einige Hundert Tabellen angewachsen, wodurch Öffnen und Speichern recht lange dauert.
:shock:  Und die werden alle immer gebraucht? Nix, was du rausnehmen und archivieren könntest? Respekt! Risikoscheu kann dir niemand nachsagen. Vielleicht ist es aber auch „nur“ Leichtsinn… Jedenfalls hoffe ich für dich, dass du ein gutes Datensicherungskonzept hast und dies auch in die Tat umgesetzt hast.
Karsten Hahn hat geschrieben:Danach kann ich in dem ursprünglichen Dokument nicht mehr weiterarbeiten, sondern in Dateiname.csv.
Dafür, dass nach dem Speichern eines Arbeitsblattes als csv-Datei kalkulation.csv statt kalkulation.ods angezeigt wird, habe ich keine Erklärung. Vielleicht ist es eine Calc-Macke. Eine csv-Datei kann stets nur ein Arbeitsblatt haben. Du siehst aber nach dem Speichern immer noch eine (Un-)Menge von Arbeitsblättern. Das lässt darauf schließen, dass du nach wie vor mit der ods-Datei arbeitest. Du solltest daher mit einem erneuten Datei → Speichern unter… als ods-Datei wieder „in der richtigen Welt“ arbeiten.

Um ein einzelnes Arbeitsblatt im csv-Format zu exportieren könntest du nach Auswahl des Punktes Tabelle verschieben/kopieren… im Kontextmenü (Rechtsklick!) des Registers das Arbeitsblatt zunächst in ein – neues Dokument – kopieren und dann diese Datei als csv-Datei speichern.

Und ja: Das lässt sich sicher auch als Makro implementieren. Hilfe dabei bekommst du in der Rubrik OOo Base / SQL.

Gruß
lorbass
F3K Total
********
Beiträge: 3723
Registriert: Mo, 28.02.2011 17:49

Re: Export als cvs

Beitrag von F3K Total »

Hi,
Karsten Hahn hat geschrieben:Lässt sich ein solches Verhalten prinzipiell erreichen, möglicherweise mit einem Makro?
Ja, mit einem Makro geht das. Dafür brauchst Du Deine Filteroptionen, die du beim Speichern als .csv einstellst.
Daher in zwei Schritten:
1.) Einmal ein Makro während des Speichervorganges, wie du es gewohnt bist, aufnehmen. Die Filteroptionen werden aufgezeichnet.
2.) Ein eigenes Makro unter Verwendung dieser Optionen anlegen.

Zu 1.)
  • Calc Datei öffnen
  • Extras/Makros/Makro aufzeichnen
  • Datei/Speichern unter -> .csv -> Haken bei Filtereinstellungen bearbeiten -> Speichern ->ggf. aktuelles Format beibehalten
  • Filteroptionen einstellen wie benötigt -> OK -> OK
  • Aufzeichnung beenden -> Neues Modul -> Main überschreiben -> Speichern
Zu 2.)
  • ALT+F11 drücken -> zu Main navigieren -> Bearbeiten
  • Du solltest jetzt etwa dies sehen:

    Code: Alles auswählen

    sub Main
    rem ----------------------------------------------------------------------
    rem define variables
    dim document   as object
    dim dispatcher as object
    rem ----------------------------------------------------------------------
    rem get access to the document
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    
    rem ----------------------------------------------------------------------
    dim args1(2) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "URL"
    args1(0).Value = "file:///C:/Users/<Dein User>/Desktop/Export_CSV.csv"
    args1(1).Name = "FilterName"
    args1(1).Value = "Text - txt - csv (StarCalc)"
    args1(2).Name = "FilterOptions"
    args1(2).Value = "9,34,ANSI,1,,0,false,true,true"
    
    dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())
    
    
    end sub
  • Davon sind diese Zeilen weiterzuverwenden

    Code: Alles auswählen

    dim args1(2) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "URL"
    args1(0).Value = "file:///C:/Users/<Dein User>/Desktop/Tabelle1.csv"
    args1(1).Name = "FilterName"
    args1(1).Value = "Text - txt - csv (StarCalc)"
    args1(2).Name = "FilterOptions"
    args1(2).Value = "9,34,ANSI,1,,0,false,true,true"
  • Ändere sie wie folgt:

    Code: Alles auswählen

    sub S_Save_as_CSV
        dim args1(1) as new com.sun.star.beans.PropertyValue
        sUrl = "file:///C:/Users/<Dein User>/Desktop/Tabelle1.csv"
        args1(0).Name = "FilterName"
        args1(0).Value = "Text - txt - csv (StarCalc)"
        args1(1).Name = "FilterOptions"
        args1(1).Value = "9,34,ANSI,1,,0,false,true,true"
        thiscomponent.storetourl(surl,args1())
        msgbox "Jepp, .csv gespeichert"
    end sub
  • Wenn Du dieses Makro aus der originalen .ods-Datei ausführst, wird die aktuelle Tabelle als Tabelle1.csv mit deinen Filtereinstellungen auf den Desktop gespeichert und die .ods bleibt geöffnet
Viel Erfolg
Gruß R
F3K Total
********
Beiträge: 3723
Registriert: Mo, 28.02.2011 17:49

Re: Export als cvs

Beitrag von F3K Total »

Hi,
dies sollte reichen:

Code: Alles auswählen

sub Main
    dim args1(1) as new com.sun.star.beans.PropertyValue
    odoc = Thiscomponent
    ocontroller = odoc.currentcontroller
    sActivesheet = ocontroller.activesheet.name
    sUrl = "file:///D:/csv/" & sActivesheet & ".csv"
    args1(0).Name = "FilterName"
    args1(0).Value = "Text - txt - csv (StarCalc)"
    args1(1).Name = "FilterOptions"
    args1(1).Value = "59,34,12,1,,0,false,true,true"
    thiscomponent.storetourl(sUrl,args1())
end sub
Gruß R
Antworten