Jak makrem zaimportować .csv

Użytkowanie arkusza kalkulacyjnego
nkab
Posty: 14
Rejestracja: pn wrz 28, 2009 10:46 am

Jak makrem zaimportować .csv

Post autor: nkab »

Dopiero wgrałem Oo stąd pytanie - czy ktoś wie jak makrem zaimportować .csv do Calca za pomocą przycisku.

Andrzej.
OpenOffice 3.1 na Windows Vista
Jan_J
Posty: 4653
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Jak makrem zaimportować .csv

Post autor: Jan_J »

Oto szkic makra importu. Podpięcie pod przycisk dokombinuj sobie sam, to nie jest trudne.

Kod: Zaznacz cały

sub importText(byval fileURL as string)
    Dim oDoc as object
    Dim args1(3) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "InteractionHandler"
    args1(0).Value = ""
    args1(1).Name = "FilterName"
    args1(1).Value = "Text - txt - csv (StarCalc)"
    args1(2).Name = "CharacterSet"
    args1(2).Value = 77              ' utf-8
    args1(3).Name = "FilterOptions"  ' opcje importu
    args1(3).Value = "9"             ' separator pól: Tab
    oDesk = createUnoService("com.sun.star.frame.Desktop")
    oDoc = oDesk.LoadComponentFromURL(fileURL, "_blank", 0, args1())
end sub
Poszukaj też w Google haseł: import "Text - txt - csv (StarCalc)" FilterOptions
W sprawie opcji filtrów patrz np. http://wiki.services.openoffice.org/wik ... er_Options
JJ
LO (26.2) ∙ Python (3.13|3.10) ∙ Unicode 17 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
nkab
Posty: 14
Rejestracja: pn wrz 28, 2009 10:46 am

Re: Jak makrem zaimportować .csv

Post autor: nkab »

Na obecnym etapie wiedzy nie wpadłbym na to. Jestem wdzięczny za listing.

Mozna wiedzieć "gdzie" lub "jak" takie rzeczy uzyskać, oczywiście jak to nie tajemnica lub własne odkrycia.

Andrzej.
OpenOffice 3.1 na Windows Vista
nkab
Posty: 14
Rejestracja: pn wrz 28, 2009 10:46 am

Re: Jak makrem zaimportować .csv

Post autor: nkab »

jednak nadal mam problem, bo chcę imprtować .csv do kolejnego arkusza.

Ten fragment kodu tworzy nowy dokument:
oDesk = createUnoService("com.sun.star.frame.Desktop")
oDoc = oDesk.LoadComponentFromURL(fileURL, "_blank", 0, args())

...a ten wpisuje do otwartego aktualnie arkusza ale likwiduje mi istniejące inne arkusze pozostawiając tylko ten jeden:
oDesc = ThisComponent.getCurrentController().getFrame()
oDoc = oDesc.LoadComponentFromUrl(fileURL, "", 2, args())

Ja zaimportować do otwartego dokumentu i wybranego w makrze arkusza taki .csv.

Andrzej.
OpenOffice 3.1 na Windows Vista
Jan_J
Posty: 4653
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Jak makrem zaimportować .csv

Post autor: Jan_J »

Tam: http://www.oooforum.org/forum/viewtopic.phtml?t=13861 jest mowa o imporcie kilku plików do osobnych arkuszy w jednym skoroszycie techniką ,,importuj csv, potem kopiuj i wklej''.
Bardziej elegancki sposób, przez ustanowienie łącza, podaje http://www.oooforum.org/forum/viewtopic.phtml?t=15678
Oba przykłady są coś warte. Powodzenia w adaptacji.
JJ
LO (26.2) ∙ Python (3.13|3.10) ∙ Unicode 17 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
nkab
Posty: 14
Rejestracja: pn wrz 28, 2009 10:46 am

Re: Jak makrem zaimportować .csv

Post autor: nkab »

Skorzystałem z tej wersji:

Kod: Zaznacz cały

sub ImportCSVIntoSheet

 oDoc = thisComponent
 oSheet = oDoc.getSheets().getByIndex(0)                  ' 1st sheet  (uwaga na niespodzianki po próbach otwarcia w kilku arkuszach)

 sURL = "file:///C:/cat1/cat2/file.csv"                   ' set arguments

' sURL = ""                                              ' ewntualna konwersja sciezki - sURL = ConvertToURL ( sURL )

' sRange=(A1:D30                                         ' parametr nieczynny - usuwany jest cały obszar arkusza

 sFilter = "Text - txt - csv (StarCalc)"
 sOption = "59,34,25"


 nLink = com.sun.star.sheet.SheetLinkMode.NORMAL



 oDoc.link(sURL, sRange, sFilter, sOption, nLink)                           ' link file
 oDoc.setLinkMode(com.sun.star.sheet.SheetLinkMode.NONE)                    ' reset link

end sub
druga wersja z tego samego linku nadaje się tylko do prostych zastosowań
bo ma problemy z użyciem filtra eksportera csv (jest zgłoszony bug).

Jak zwykle wyrazy wdzięczności

Andrzej.
OpenOffice 3.1 na Windows Vista
ODPOWIEDZ