Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 10. 10. 2017 20:48:07

jezisekpanacek
Člen
Registrace: 29. 11. 2011
Příspěvků: 7

Chyba převodu do CSV - VYŘEŠENO

Ahoj, mám problém při převodu souboru XLS do CSV. Některé hodnoty v buňkách mají před hodnotou jednoduchý apostrof (ALT-39), tj. např. '411001E99. Při následném uložení do CSV a otevření souboru má buňka tvar 4,11001E+104. Nevíte někdo, jak se toho hromadně zbavit?
Zkoušel jsem i převod formátu buněk na text, kdy apostrof sice zmizí, následně uložím do CSV, ale po otevření CSV je problém stále stejný. Ani kopírování buněk do TXT poznámkového bloku a zpět nepomůže :-(

Editoval jezisekpanacek (13. 10. 2017 10:22:31)

Offline

#2 10. 10. 2017 21:23:40

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Chyba převodu do CSV - VYŘEŠENO

Nevím jestli si rozumíme. Výraz '411001E99 je totožný s 4,11001E+104 jen jeho zápis vypadá rozdílmě :
'411001E99          = 411001  E+99 > 41100,1 E+100 > 4110,01 E+101 > ....
'4,11001E+104    = 4,11001 E+104 ..tedy bez apostrofu. S apostrofem by to bylo po převodu do CSV.
     První případ s apostrofem je formát čísla text (@) a ten druhý je číslo ve vědeckém formátu. Původem jde tedy o výraz s apostrofem z Excelu který Calc načítá jinak. Calc to hned převádí na číslo ale podle "svého". Takže nevím jestli je toto problém, nabo něco jiného.


     Konkrétně tedy někdy asi apostrof je a jindy není a Vy potřebujete aby to bylo jednotné. To se dá zařídit například pomocí =VALUE(odkaz na buňku s apostrofem). Existují i jiné postupy ale jsou pracnější, nebo závislé na makru.
     Jestli je toho hodně, tak makro. Pokud by takové číslo nebylo samo v buňce jde o větší problém. To by se mělo objasnit. Pokud je to nějak komplikovanější postněte raději ukázku (nejlépe pomocí portálu ulozto.cz, nebo podobným portálem).

Editoval neutr (10. 10. 2017 21:27:55)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 10. 10. 2017 21:44:48

jezisekpanacek
Člen
Registrace: 29. 11. 2011
Příspěvků: 7

Re: Chyba převodu do CSV - VYŘEŠENO

Děkuji za rychlou odpověď. Jedná se o cca 500 buněk, takže makro nebude nutné. Zkoušel jsem postup přes funkci VALUE a rovněž to převádí na tu buňku se zápisem 4,11001E+104, což nechci, viz výsledek v buňce E3.
Zjednodušenou zdrojovou tabulku jsem dal do Dropboxu sem:
https://www.dropbox.com/s/ga0cn7ky6j0gbab/REE.xls?dl=0
Problémové jsou buňky D3, D4, D5, D6 a D7. Zbytek buněk (D1, D2 i D8) apostrof nemá, takže zde problém není.

Offline

#4 11. 10. 2017 07:07:02

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Chyba převodu do CSV - VYŘEŠENO

Z toho DropBoxu moc moudrý nejsem. Když najedu na buňky tak je tam v pravém rohu nahoře uvedeno číslo, Čísla buněk jdou za sebou D1, D4, D7, D10, D13, D16, D19, ...D(++3).
       Cituji "Zkoušel jsem postup přes funkci VALUE a rovněž to převádí na tu buňku se zápisem 4,11001E+104, což nechci, viz výsledek v buňce E3." Podle popisu který se ukazuje je to buňka E7 - je ale 3. buňkou shora protože ostatní mezilehlé jsou vždy po dvou skryty (zřejmě filtrem, kontingenční tabulka a podobně).


       Takže nyní je teprve vyjádřena potřeba : - Požadujete aby zůstal zachován původní tvar vědeckého zápisu čísla. Budete muset laborovat na relaci vlastní podoby vědeckého formátu. Problém měže být mezi různými verzemi LO (AOO).
POSTUP :
1 - FORMÁT > FORMÁT BUŇKY > KARTA ČÍSLA > SLOUPEC KATEGORIE (a Formát).
2 - Nejprve se podívejte jak vypadá zápis formátování těch správných tvarů které máte bez apostrofu.


     Je možné že jde stále o formát text. Totiž apostrof je vidět teprve tehdy když dojde k přeformátování z textu na něco jiného - čísla, měna a podobně. Teprve pak je vidět ten apostrof - do té doby nikoliv. Takže jednou cestou je nechat formáty čísel ve tvaru text (@).
     V takovém případě kdy přeformátujete výraz s apostrofem na formát číslo(@) - můžete apostrof smazat a jde stále o text - výraz je zarovnán do levé strany.


      V případě že potřebujete opravdu čísla tak budete muset vytvořit vlastní formát vědeckého typu. Originální nabídka v Calcu je :
buď        0,00E+000
nebo      0,00E+00
a nebo ##0,00E+00
      Vy byste měl vytvořit vlastní formát typu 000000E00 ale to chce opravdu testovat jak toho dosáhnout. Calc má tendenci vždy spadnout do implicitního (prvního) zápisu tvaru.


      Podobných dotazů na formát čísla tady bylo více. Prohledejte historii - určitě najdete mnoho zajímavých tipů "jak na to formátování".

Editoval neutr (11. 10. 2017 07:10:11)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#5 11. 10. 2017 09:27:44

jezisekpanacek
Člen
Registrace: 29. 11. 2011
Příspěvků: 7

Re: Chyba převodu do CSV - VYŘEŠENO

Je možné, že se vám XLS otvírá trochu jinak než mne. Zde je náhled, jak ji vidím já:
https://www.dropbox.com/s/rr6i47btdaj03om/ree.jpg?dl=0
Vědecký formát právě nechci, toho se chci zbavit. Zjistil jsem, že ho způsobuje ten jednoduchý apostrof na začátku, který je vidět v buňce D3 (viz červená šipka), dále pak je v bunkach D4, D5, D6 a D7.
Druhá červená šipka je výsledek funkce =VALUE(D3).
Formát buňky je mi jedno, zda to bude Text nebo Číslo, můj systém do kterého CSV následně importuji si to přebere.

Offline

#6 11. 10. 2017 11:04:25

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Chyba převodu do CSV - VYŘEŠENO

Tak to není. Formát je dán zdrojem - tedy Excelem. Tam musí být originálně tento formát uveden, nebo se to naformátuje při exportu do CSV. Originální číselný formát 411001 E 99 má 105 míst (od 18. místa už je to zaokrouhlované a jsou tam ve zbytku od 87. místa nuly).
     Proto se to automaticky konvertuje do věděckého formátu čísla. Ten apostrof vzniká podle exportního filtru (Excelu). Je možné že pokud spolu s číselným výrazem existuje v buňce mezera, nebo speciální znak - tak výstup vypadá jinak nežli když je tam pouze číslo. To by mohl být důvod proč někde apostrof je a jinde nikoliv.


     Originál po importu (do Calcu) z CSV může také způsobit chybu toho apostrofu, ale příčina bude podobná jako při exportu z Excelu. Jednoduše nějaký důvod proč někde apostrof je, nebo není musí existovat.
     Možná by technicky šlo nepoužívat CSV ale Excel přímo načítat Calcem který umí konverzi velmi dobře. To ale nemohu předvídat. Často jde o CSV které mají zdroj mimo tabulkový procesor (například z průmyslové technologie). Potom se implicitně načítá do Excelu, ale šlo by to přímo do Calcu. To je zase ale věcí implementace kterou uživatel většinou nemůže ovlivnit.


     Stav je tedy takový, že požadujete nativní formát čísla se 105-ti místy? Nebo spíš potřebujete vědecký formát určitého stejného typu který se chová jako číslo (lze s ním dělat výpočty)?
     Předpokládám že pokud vadí jen ten apostrof a nikoliv textový formát tak stačí sjednotit formát tímto postupem :
A - Vybrat sloupec s číselnými tvary.
B - Zvolit FORMÁT > FORMÁT BUŇKY > ČÍSLA > ZADAT @ (poslední volba ve sloupci formátu)
C - Máte stále vybrán celý sloupec (pokud ne obnovte celý výběr) a zadejte :
     DIALOGEM NAJÍT A NAHRADIT (z nabídky úpravy)
     - najít apostrof (')
     - nahradit bez čehokoliv - nic v okénku pro náhradu.


     Toto by mělo odstranit všechny apostrofy a zbyde jen textový formát čísla(@). S tím si už podle všeho poradíte (cílové řešení?). Tento postup ale může mít i určitou problematiku. To může být dáno zejména mezerami CHAR(32). Ty by se musely odstranit textovými funkcemi např CLEAN(text) který odstraní všechny netisknutelné znaky a TRIM(text) který odstraní mezery (které jsou tisknutelným znakem).
     Pokud byste požadoval opak - všechny tvary jen s apostrofem, tak stačí formát(@) změnit na "číslo". Tím se apostrof objeví - (po odstranění apostrofu je to číslo numerického typu)


     Pokud by se Vám nedařilo sjednocení na určitý typ bude nutné postnout vzor a ne jen obrázek. Stačí ale jen několik typických případů - tak aby vzor nevypovídal nic o účelu a podobně.


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#7 11. 10. 2017 14:22:38

jezisekpanacek
Člen
Registrace: 29. 11. 2011
Příspěvků: 7

Re: Chyba převodu do CSV - VYŘEŠENO

Ano, jak píšete, potřebuji "vědecký formát určitého stejného typu který se chová jako číslo"
Udělal jsem kroky A, B, C. Ano, apostrofy tam sice nejsou vidět, ale stále je něco špatně, protože když zkusím udělat krok D, tak to logicky žádné apostrofy nenajde a když udělám funkci =VALUE(D3), popř. export do CSV, tak tam mám zase ten dlouhý formát 4,11001E+104 apod, viz
https://www.dropbox.com/s/kai7ppox51h17s0/REE2.csv?dl=0

Popř. zde je odkaz na zdrojovou tabulku ze které vytvářím výše uvedené CSV:
https://www.dropbox.com/s/p1qp36hfhofeeff/REE2.xls?dl=0

Tabulky neprohlížejte přímo v Dropboxu, ale stáhněte si je a otevřete ve vašem OO, chová se to totiž jinak ...

Offline

#8 11. 10. 2017 14:42:47

kabi
Člen
Registrace: 1. 6. 2017
Příspěvků: 167

Re: Chyba převodu do CSV - VYŘEŠENO

jelikož v souboru vidím i hodnotu 417501A99, tak předpokládám, že se nemá jednat o číselnou hodnotu, ale nějaký textový řetězec. Při otevírání csv souboru v LO stačí v okně filtru pro tento sloupec zvolit Typ sloupce = Text (výchozí nastavení je totiž Standardní a v tom případě se Calc pokouší některé řetězce převést na číslo).
Varianta 2 je, že si již při převodu do csv ve filtru nastavíte, že textová pole mají být oddělena apostrofem. Pokud k tomu používáte LO, je potřeba při ukládání zvolit možnost 'Upravit nastavení filtru' a v následném dialogovém okně exportního filtru zvolit 'Textové buňky do uvozovek'. Samozřejmostí je, že sloupce ve zdrojovém xls souboru musí mít formát Text.

Editoval kabi (11. 10. 2017 14:57:00)

Offline

#9 11. 10. 2017 15:07:37

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,435

Re: Chyba převodu do CSV - VYŘEŠENO

Vycházel jsem z tohoto prvního příspěvku. - kabi má pravdu podle staženého souboru to "E" reprezentuje text obecného řetězce protože se zde objevuje také místo "E" například "A". Toho jsem si nevšimnul - ani u první ukázky. Ten první příspěvek který mne spletl je citovaný zde :

jezisekpanacek napsal(a)

Ahoj, mám problém při převodu souboru XLS do CSV. Některé hodnoty v buňkách mají před hodnotou jednoduchý apostrof (ALT-39), tj. např. '411001E99. Při následném uložení do CSV a otevření souboru má buňka tvar 4,11001E+104. Nevíte někdo, jak se toho hromadně zbavit?
Zkoušel jsem i převod formátu buněk na text, kdy apostrof sice zmizí, následně uložím do CSV, ale po otevření CSV je problém stále stejný. Ani kopírování buněk do TXT poznámkového bloku a zpět nepomůže :-(


     Omlouvám se a vše beru zpět - nejedná se o čísla ale o obyčejný text. Sešit podle "E" rozpoznává vědecký formát a já jsem na to naletěl také : -(
     Označte vše jako formát čísel text(@) a najděte apostrof > nahraďte za "nic" a mělo by to být správně.


PS :   Apostrofy vyskočí jen tam kde je číslo které bylo formátované na text. Tam kde číslo nebylo detekováno apostrof není. Když tedy označíte vše jako číselný formát @ tak u čísel je někdy ještě apostrof a po jeho smazání se nic neděje.
     Tam kde je textový formát čísla a přeformátujete na "skutečné" číslo - tak se objeví apostrof a dá se smazat. Pokud tedy dialog apostrofy nenajde - už tam žádné nejsou (musí být samozřejmě vybrán celý list, nebo alespoň úsek s těmi "čísly".

Editoval neutr (11. 10. 2017 15:21:56)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#10 13. 10. 2017 10:21:32

jezisekpanacek
Člen
Registrace: 29. 11. 2011
Příspěvků: 7

Re: Chyba převodu do CSV - VYŘEŠENO

to kabi: MOC MOC MOC děkuji, problém vyřešen, stačilo opravdu změnit při otevírání filtr sloupce na Text a data jsou tak, jak potřebuji! Je skvělé, že jste mi dokázal poradit takto na dálku, již týden jsem to řesil a už byl bezradný. Přeji pěkný den!

kabi napsal(a)

jelikož v souboru vidím i hodnotu 417501A99, tak předpokládám, že se nemá jednat o číselnou hodnotu, ale nějaký textový řetězec. Při otevírání csv souboru v LO stačí v okně filtru pro tento sloupec zvolit Typ sloupce = Text (výchozí nastavení je totiž Standardní a v tom případě se Calc pokouší některé řetězce převést na číslo).
Varianta 2 je, že si již při převodu do csv ve filtru nastavíte, že textová pole mají být oddělena apostrofem. Pokud k tomu používáte LO, je potřeba při ukládání zvolit možnost 'Upravit nastavení filtru' a v následném dialogovém okně exportního filtru zvolit 'Textové buňky do uvozovek'. Samozřejmostí je, že sloupce ve zdrojovém xls souboru musí mít formát Text.

Offline

Zápatí