mojaSymfonia FORUM https://forum.mix-soft.pl/ |
|
AmBasic Odczyt z pliku CSV https://forum.mix-soft.pl/viewtopic.php?f=15&t=5210 |
Strona 1 z 1 |
Autor: | FAQ [ 2013-10-10, 16:56 ] |
Tytuł: | AmBasic Odczyt z pliku CSV |
Jak odczytać dane z pliku CSV?. Separatorem pliku jest przecinek. Ogranicznikiem tekstu jest znak " |
Autor: | FAQ [ 2013-11-15, 19:16 ] |
Tytuł: | Re: AmBasic Odczyt z pliku CSV |
Przykład danych do odczytu Kod: "nazwa","limitkwota","plattyp","kod","miejscowosc","limiti" "Agora Gazeta",1000.00,255,"Agora","Warszawa",1 "Auto SALEon s.c.",0.00,255,"Auto SALEon s.c.","Szczecin",0 "Bank PKO SA",0.00,255,"Bank PKO SA","Warszawa",0 "Edelweiss SA",0.00,255,"Edelw Zwierzyniec","Krasnystaw",0 "Edelweiss SA Oddział Zwierzyniec",0.00,131,"Edelweiss SA","Zwierzyniec",0 "Herr Flueck KG",0.00,255,"Herr Flueck KG","Hannover",0 "Kornel Kobza i ska",0.00,255,"Kornel Kobza","Radom",0 "Kornex sp. z o.o.",15000.00,130,"Kornex sp. z o.o.","Zamość",1 "MATRIX.PL SA",0.00,255,"MATRIX","Warszawa",0 "Nowak Jan",0.00,130,"Nowak Jan","Kraków",0 "TP SA",0.00,255,"TP SA","Lublin",0 Do wyodrębnienia danych użyj obiektu Kod: dispatch exp = "VBScript.RegExp" dispatch mat exp.Global = 1 exp.IgnoreCase = 1 exp.pattern= "([^,\"]+|\"([^\"]|\"\")*\"|,,)" string sLinia int i int iCSV = open "c:\\temp\\dane.csv" for input while (Input #iCSV,sLinia) mat = exp.Execute( sLinia ) for i = 0 to i>mat.Count()-1 print using "Kolumna : %d Wartość : %s" + lf, i, mat.item(i).value,lf next i wend Close(iCSV) Wynik działania Załącznik: hmcsv03.jpg [ 130.58 KiB | Przeglądany 4681 razy ] |
Autor: | tomas [ 2017-01-16, 11:25 ] |
Tytuł: | Re: AmBasic Odczyt z pliku CSV |
Dlaczego tekst zwracany jest ze znakami " ? |
Autor: | marty123 [ 2018-04-19, 10:39 ] |
Tytuł: | Re: AmBasic Odczyt z pliku CSV |
Sprawdziłem ten raport i działa całkiem sprawnie, pojawia się tylko problem w sytuacji gdy dwie kolejne kolumny są puste, wtedy mam w pliku trzy przecinki obok siebie i liczba kolumn wartości nie zgadza się z liczbą kolumn nagłówka. Na razie wymyśliłem dwa szybkie rozwiązania, 1.żeby wszystkie kolumny miały jakąś wartość, ale to nie jest najbradziej optymalne rozwiązanie. 2.to chyba lepsze - żeby polecieć po pliku najpierw i zamienić trzy kolejne przecinki na cztery w każdej linii, wtedy zadziała poprawnie wyrażenie regularne, można to zrobić przed komendą : Kod: mat = exp.Execute( sLinia ) |
Autor: | szepczący [ 2018-04-19, 11:20 ] |
Tytuł: | Re: AmBasic Odczyt z pliku CSV |
Tu jest temat o użyciu wyrażeń regularnych (nie obiektem ale wbudowaną zmienną specjalną buf + find regular): viewtopic.php?f=15&t=8009 |
Autor: | marty123 [ 2018-04-19, 13:33 ] |
Tytuł: | Re: AmBasic Odczyt z pliku CSV |
już kombinowałem z różnymi wyrażeniami, ale jest kłopot, żeby rozbić dwa przecinki jako jedną kolumne, a trzy jako dwie kolumny, zostanę przy podmianie trzech przecinków na cztery przed zastosowaniem wyrażenia regularnego. |
Strona 1 z 1 | Strefa czasowa UTC+1godz. [letni] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |