Import danych z pliku txt do calca

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO
wicy
Posty: 9
Rejestracja: wt sty 03, 2012 11:33 am

Import danych z pliku txt do calca

Post autor: wicy »

Mam plik tekstowy będący pomostem wymiany danych między excelem a OO. Innego sposobu nie znalazłem a wymiana excel-excel działa poprawnie.
Gorzej z wymianą danych excel->txt->OO. Excel zapisuje dane z wierszy tabeli do pliku tekstowego rozdzielanego ";". Odczyt linni pliku odbywa się w obu programach tymi samymi instrukcjami

Kod: Zaznacz cały

Do While Not EOF(1)
    Line Input #1, fields
...
Problem w tym, że excel inaczej odczytuje dane niż OO. Pola tabeli źródłowej w formacie tekstowym, zawierające łamanie linii w komórce, zapisywane są w pliku tekstowym z łamaniem linii (chr(13)). Excel do "fields" wczytuje poprawnie całą linię, jakby ignorując pojedyncze #13, natomiast OO wczytuje linię tylko do pierwszego #13.
Dla przykładu, coś co w pliku tekstowym wygląda tak:

Kod: Zaznacz cały

x;y;z;Janek Zenek Zdzisiek;x;y;z;
gdzie "Janek Zenek Zdzisiek" zapisane są w źródłowym excelu z łamaniem linii w komórce, w pliku tekstowym wygląda tak:

Kod: Zaznacz cały

x;y;z;Janek
 Zenek
 Zdzisiek;x;y;z;
Excel wczytuje pełną linię a OO wczytuje tylko : x;y;z;Janek

Jak sobie z tym poradzić?
OpenOffice 3.1 Windows XP
Jan_J
Posty: 4653
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Import danych z pliku txt do calca

Post autor: Jan_J »

Mam nadzieję, że Excel wpisuje do pliku ograniczniki tekstu. Bez nich będzie trudno wytłumaczyć Calcowi, że koniec wiersza nie oznacza końca czytania.
Przy tym użycie niskopoziomowego Line Input oznacza konieczność oprogramowania formatu samemu. Ja bym raczej użył filtra importu z plików znakowych, który takie możliwości ma wbudowane.

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)
wicy
Posty: 9
Rejestracja: wt sty 03, 2012 11:33 am

Re: Import danych z pliku txt do calca

Post autor: wicy »

Dzięki, ale to chyba jednak za bardzo dla mnie skomplikowane. Poradziłem sobie w ten sposób, że przez zapisem do txt z excela, tam gdzie mogą wystąpić "łamane" stringi, dałem linijkę:

Kod: Zaznacz cały

replace(zapisywany_string, chr(10), "[enter]", 1, -1)
OO odczytuje prawidłowo linijki a potem podmienia [enter] na łamanie linii ;) Prościej chyba nie potrafię.
OpenOffice 3.1 Windows XP
Jan_J
Posty: 4653
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Import danych z pliku txt do calca

Post autor: Jan_J »

Też OK, o ile fraza [enter] nie wystąpi w danych. Ja bym pisał \\ lub <br/>, ale to nic nie znaczący szczegół.
JJ
LO (26.2) ∙ Python (3.13|3.10) ∙ Unicode 17 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
ODPOWIEDZ