home K2»Infoservice»Diskusní fórum»Načtení dat z csv ve skriptu

Topic created by Drastik Jan
Last contribution added by Drastik Jan Friday, November 15, 2024 11:07:18 AM. Topic contains 5 Replies.
Module: Process:
Thursday, November 14, 2024 3:31:17 PM
  • Drastik Jan
  • Registered12/9/2015
  • Naposledy přihlášen 1/21/2025
Dobrý den,

nemáte někdo prosím nějaké elegantní řešení, jak načíst jednoduše .csv soubor ve skriptu do MF?

Děkuji.

Friday, November 15, 2024 6:19:29 AM
  • Dékány Jan
  • Registered8/1/2012
  • Naposledy přihlášen 1/21/2025
Ahoj Honzi... Nevím, zdali je to pátkem, ale co myslíš písmeny MF?

Friday, November 15, 2024 7:24:38 AM
Dobrý den,
pokud chcete úplně jednoduše načíst csv soubor, můžete použít přímo typ csvfile, kde si můžete definovat i jednotlivé typy polí. Nicméně s některými csv soubory si tento přístup neporadí, ale pro jednoduché dobře strukturované csv bude fungovat. Csvfile však nemá indexy a proto je vhodné jej přeplnit do memfile. U přístupu přes csvfile je však problém s rozpoznáním kódování.
Dále existuje jednotka CsvParserClass, která umí rozparsovat csv soubor i s různými záludnostmi. Tím myslím použití uvozovek nebo čárek uvniř textu, odřádkování v rámci pole atd. Jednotka parsuje jednotlivé řádky a vrací pole stringů, které dále musíte zpracovat podle konkrétní úlohy. Pokud máte úplně jednoduchý soubor, kde se žádná záludnost nebude vyskytovat, většinou načítáme pomocí objektu TStringList a pak rozpadáme na jednotlivá pole pomocí StrToArray. Memfile pak definujeme podle potřeby, jaká data z csv chceme používat.
Myslím si, že je lepší přistupovat ke každému csv souboru nově podle potřeby jeho dalšího zpracování.

Za tým K2
Mikuláš Kovařčík

Friday, November 15, 2024 8:41:46 AM
  • Drastik Jan
  • Registered12/9/2015
  • Naposledy přihlášen 1/21/2025
Ahoj,

MF = MemFile :)

--------------------
Takhle vypadá csv. Za mě je jednoduchý, kde | je oddělovač a žádné záludnosti tam nejsou (kromě čárky v textu a /.) Ale ty nejsou pro mě až tak důležité, protože je to pomocný text).

Transaction ID|Accounting date|Timestamp date|Global source type|Global source details|Source type|Source details|Card type
168430967|2024-11-13T11:02:45.803000|2024-11-13T11:02:45.803000|||||1|RFID|

A nemáte prosím někde kousek skriptu pro načteni jednoduchého csv souboru?

Děkuji moc.

Příspěvek byl změněn: Drastik Jan, dne: 15.11.2024 8:43:44.

Friday, November 15, 2024 8:44:39 AM
  • Tommek Petr
  • Registered2/14/2005
  • Naposledy přihlášen 11/28/2024
Třeba:

type
TMujCSV = csvfile
Obdobi : string ;
ZboZkr : string ;
ZboPopis : string ;
Cena : string ;
CenaPozink : string ;
end;


var
MujCSV : TMujCSV;


MujCSV.CreateXf;
SetCsvAttrib(MujCSV ,'|',Chr(9),' ','yyyy.mm','hh:mm:ss');
MujCSV.PathFile := (pfPath);
MujCSV.FileName := Cesta + 'MujCSV.csv';
MujCSV.ForceValidTable;
MujCSV.Open(omNormal);
SetDosFileCutLine(MujCSV,True);

PT
Příspěvek byl změněn: Tommek Petr, dne: 15.11.2024 9:03:21.

Friday, November 15, 2024 11:07:18 AM
  • Drastik Jan
  • Registered12/9/2015
  • Naposledy přihlášen 1/21/2025
Tak nakonec nemohu využít ten jednoduchý postup. Chtěl jsem to přiohnout to poté ještě zkusit přes komponentu excelu, ale to nebyla taky cesta. Nemáte někdo prosím nějaký příklad využití načítání s třídou CsvParserClass?