[Python/R] Prepis hodnôt z excelu do štrukturovaného txt

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod creat 15. 6. 2018 13:58

Zdravím,

potrebujem automatizovať prepis hodnôt z excelu do txt dokumentu. Hodnoty v excely (nie všetky) sa pravidelne menia (raz za štvrťrok) a je ich rovnako ako v txt forme niekoľko stoviek riadkov. Tiež vidíte, že štruktúra hodnôt v txt je divoká a musí ostať zachovaná. Robím to ručne, ale už ma to otravuje (zabere to aj pol dňa). Potrebujem niečo, čo mi tento prenos údajov zautomatizuje.

Ďakujem za tipy. Robím v Pythone a R-ku.

Obrázek
Nu Force uDAC-2 ---> DIY headamp s LM4562 + TPA6120IO ---> AKG K701
Sandisk Sansa Clip Zip + VSONIC GR07
Tričko AVmánie :lol:

"Ovocné víno každý den, tvůj život se změní ve zlý sen."
creat
Junior
Uživatelský avatar

Odeslat příspěvekod Nargon 15. 6. 2018 15:33

Asi ti můžu jen popřát hodně štěstí.
Teoreticky to není neřešitelné. Rozhodně se nesnaž upravovat ten výsledný txt soubor. Raději si vytvoř aplikaci, která ze zadaného vstupního souboru vygeneruje výstupní soubor v požadovaném formátu. Vyhneš se tak problémům, že někdo špatně upravil ten txt soubor a při přepisování hodnoty tam zůstane část původního čísla a hodnota v txt souboru bude chybná.
Co jsem tak rychle googlil tak knihovny pro čtení excelu jsou, tak s tímto to budeš mít celkem snadné. Ale co se na to tak dívám tak absolutně nechápu provázanost mezi hodnotami. Například jsem se díval na hodnotu 19.650, kterou máš o dva řádky víš v tom txt souboru, ale ať koukám, jak koukám, tak ve sloupci I toho excelu nikde není, a hodnotu 19.65 nevidím ani nikde jinde v tom excelu. Ty to asi víš co s tím, když s tím každý čtvrtek děláš, ale pro nezasvěcence v tom žádnou logiku nevidím a tedy ti nemám co poradit, když nevím jak to přepisování probíhá.
Desktop: Ryzen 7 1800X (3.95GHz, 1.35V), Asus Crosshair VI Hero, 16GB DDR4 Ram (3200MHz), 128GB SSD + 3TB HDD, Nvidia GTX 1080
Notebook: Asus UL50VT 15.6" (SU7300@1.7GHz, 4GB ram, 500GB HDD, Intel GMA 4500MHD + nVidia G210M, dlouha vydrz cca 7+ hod)
Nargon
Moderátor

Odeslat příspěvekod JirkaVejrazka 15. 6. 2018 18:57

V Pythonu pouzij knihovnu openpyxl nebo xlrd. Jak pise Nargon, potrebujes ten vysledny TXT soubor generovat, ne upravovat existujici.

Trochu mi unika smysl, ale to je tvoje vec. Bez konkretnejsich udaju ti nikdo vic neporadi, ta jedna sipka na obrazku nic neznamena, tezko z toho usuzovat jak velka cast toho TXT souboru pochazi z dat, ktera byla puvodne v Excelu.
JirkaVejrazka
Mírně pokročilý

Odeslat příspěvekod creat 16. 6. 2018 11:25

Ďakujem za odpoveď. Tak, čo sa týka zmyslu, TXT súbor má preto špeciálnu štruktúru, pretože z neho berie údaje a hodnoty softvér na výpočet elektrických sieti. Lenže keď mi prídu nové namerané hodnoty napríklad zo 120 odberných miest v exceli, tak ja musím prácne hľadať v txt konkrétne súradnice hodnôt, prepísať ich, uložiť, načítať do softvéru a urobiť výpočet. TXT súbor má vyše 4 000 riadkov a desiatky stĺpcov. Pohrám sa openpyxl a uvidím.

Margon -> Čo sa týka excelu, tak aby to nebolo tak jednoduché, excel obsahuje 11 tabuliek, takže tá hodnota 19.650 tam je, len v inej tabuľke...

Díky, ale vyzerá to tak, že sa asi nepohnem moc dopredu :-(
Nu Force uDAC-2 ---> DIY headamp s LM4562 + TPA6120IO ---> AKG K701
Sandisk Sansa Clip Zip + VSONIC GR07
Tričko AVmánie :lol:

"Ovocné víno každý den, tvůj život se změní ve zlý sen."
creat
Junior
Uživatelský avatar

Odeslat příspěvekod Nargon 16. 6. 2018 23:15

Co se týče vytvoření toho výstupního souboru tak je to celkem snadné. Jediné co musíš tak formátovat čísla na pevnou délku, tj 3 desetinné pozice a celý text doplňovat zleva mezerami na pevnou délku cca 10 znaků (záleží na konkrétním místě v txt souboru) a pak už jen lepíš jednotlivé hodnoty dohromady. A sem tam vložíš nový řádek.
Načítání excel souboru je také celkem snadné, na to jsou ty knihovny, práce s nimi je celkem jednoduchá. Otevřeš soubor, otevřeš list a pak můžeš celkem snadno číst ze souřadnic (sloupec a řádek).
Ta nejtěžší část podle mě je načíst správnou hodnotu ze vstupního souboru. Zde záleží jakou variabilitu má ta hodnota. Vezmu například tu hodnotu 47.250, pokud se vždy nachází na stejné pozici, tj například sešit číslo 3, sloupec I, řádek 167 tak to máš snadné. Jen do kódu programu tuhle pozici budeš muset zapsat. A stejně tak pro všechny ostatní hodnoty. Horší to je v případě, že hodnota pevnou pozici nemá, ale nějak se mění. Například řádek 167 neplatí, ale je variabilní, pak musíš vyhledat nějaký identifikátor podle kterého to poznáš. Tohle já netuším, to záleží na tom co s tím vždy děláš, takže by to pro tebe nemělo být složité. Takže například musíš ve sloupci A vyhledat hodnotu "B" a to ti určí ten správný řádek a pak na tom řádku vezmeš sloupec I a máš tu hodnotu co budeš zapisovat do výstupu.
Z pohledu principu je to celkem snadné, ale mě osobně by se s tím nechtělo dělat protože v tom výstupním souboru je fakt hodně čísel a při představě, že každé takhle mapuji a vyhledávám tu správnou pozici na základě nějakých dalších hodnot, navíc těch hodnot vidím cca 200 (odhad), tak to se s tím programem budeš dělat tak dva týdny.
Desktop: Ryzen 7 1800X (3.95GHz, 1.35V), Asus Crosshair VI Hero, 16GB DDR4 Ram (3200MHz), 128GB SSD + 3TB HDD, Nvidia GTX 1080
Notebook: Asus UL50VT 15.6" (SU7300@1.7GHz, 4GB ram, 500GB HDD, Intel GMA 4500MHD + nVidia G210M, dlouha vydrz cca 7+ hod)
Nargon
Moderátor


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků