Promotic
WikipediaLinkedInYoutubeTwitterFacebook

FileCsvRead - metoda objektu Pm

Popis:
Parametrizované načtení dat z CSV souboru.
Syntaxe:
FileCsvRead(sFile As String, sFields As String, sParams As String) As Variant
Volání:
data = Pm.FileCsvRead(sFile, sFields, sParams)
Parametry:
sFile(String) Soubor k načtení. Nezávisle na tom, zda tento parametr je, či není nastaven, lze nastavením parametru fileselect nechat otevřít okno pro výběr souboru na disku. Pokud není zadána celá cesta, doplní se relativně vzhledem k souborové složce aplikace.

Je doporučeno použít cestu v syntaxi PROMOTIC - viz PROMOTIC cesta k souborům nebo složkám.

sFields(String) Určuje, které sloupce ze souboru budou načteny a jaké datové typy budou mít načtená data. Například "filecols:0,1,2,3;datatypes:string,double,string,string;".
filecols - Určuje, které sloupce ze zdrojového CSV souboru budou ve výsledné matici hodnot. Pokud je zadáno filecols:all; (přednastaveno), pak se uloží všechny sloupce ve stejném pořadí.

Seznam číselných indexů, kdy se postupně pro každý sloupec výsledné matice hodnot uvádí index (pořadí) ve zdrojovém CSV souboru. Každý sloupec výsledné matice může být načten z libovolného sloupce ve zdrojovém CSV souboru. Znamená to, že seznam musí mít tolik položek, kolik má sloupců výsledná matice hodnot.

Pokud je zadáno filecols:all; (přednastaveno), pak se načítají všechny sloupce.

Pokud je zadáno například filecols:0,1,3,8;, pak se načítají jen ty sloupce ze souboru, které jsou zde uvedeny indexem (indexováno od 0).

datatypes - Seznam datových typů sloupců výsledné matice hodnot. Datový typ sloupce určuje způsob načtení hodnot z příslušného sloupce CSV souboru. Zadané datové typy sloupců a pořadí musí odpovídat výsledné matici hodnot. Znamená to, že seznam musí mít tolik položek, kolik má sloupců výsledná matice hodnot. Sloupce ve zdrojovém CSV souboru se mohou odlišovat od výsledné matice hodnot, pokud se použije filtrace sloupců pomocí filecols. Povolené názvy datových typů jsou: string, byte, integer, bool, single, double. Například datatypes:string,integer,bool,single;

Pokud parametr není uveden, pak implicitní volba je string.

sParams(String) Určuje způsob načtení dat ze souboru.. Například "fileselect:yes;colnameheader:yes;delimiter:comma;"
"fileselect:xxx;" (nepovinné)
yes - voláním metody je vyvolán okno pro výběr souboru na disku nezávisle na nastavení parametru sFile.
no (přednastaveno)
"colnameheader:xxx;" (nepovinné)
yes - v prvním řádku souboru nejsou data ale názvy jednotlivých sloupců.
no (přednastaveno) - už v prvním řádku souboru jsou uložena data.
"swap:xxx;" (nepovinné)
yes (přednastaveno) - sloupce ze souboru jsou uloženy jako řádky ve výsledné matici (v buňce data(i,j) je hodnota i-sloupce a j-řádku souboru).
no - řádky ze souboru jsou uloženy jako řádky ve výsledné matici (v buňce data(i,j) je hodnota i-řádku a j-sloupce souboru).
"delimiter:xxx;" (nepovinné) - (jen pro CSV) Oddělovač hodnot v CSV souboru. Povolené hodnoty jsou:
semicolon (přednastaveno) - odddělovač je středník.
comma - odddělovač je čárka.
space - odddělovač je mezera.
tab - odddělovač je tabelátor.
number - tj. oddělovač je zadán dekadickým číslem ASCII znaku, například "delimiter:124;" znamená oddělovač "|" (vertikální čára).
"lastcolsep:xxx;" (nepovinné)
yes - Při zápisu se přidá separátor za poslední hodnotou na řádku, při načtení se prázdná hodnota na konci každého řádku ignoruje. Z hlediska CSV souboru to není správně.
no (přednastaveno) - Separátory jsou jenom mezi hodnotami na řádku a nikoliv na konci řádku. Z hlediska CSV souboru je toto správně.
Vrácená hodnota:
- Vrací matici (tzn. 2-rozměrný Array), pokud je čten více než jeden sloupec ze souboru.
- Vrací vektor (tzn. 1-rozměrný Array), pokud je čten jen jeden sloupec ze souboru.
- Vrací hodnotu typu Empty, pokud čtení dat skončilo chybou.
Poznámka:
Pro vytvoření a zápis dat do CSV souboru slouží FileCsvWrite metoda. Lze ale využít i metodu FileTextWrite (viz Příklad2 u této metody).
 
Tato metoda není funkční pro Web Obrazy.
Příklad1:
Metoda zobrazuje okno pro výběr souboru (přednastavený soubor je data.csv uložený ve složce aplikace), načítá data vybraného souboru ze všech sloupců. Hodnoty v souboru jsou odděleny středníkem a soubor neobsahuje v prvním řadku názvy sloupců.
Dim vData
vData = Pm.FileCsvRead("#app:data.csv", "filecols:all;", "delimiter:semicolon;colnameheader:no;fileselect:yes;")
If Pm.IsValid(vData) Then
  ... 'Když byla data v pořádku načtena.
End If
Příklad2:
Metoda načítá data ze souboru data.csv (název,hodnota,jednotka,poznámka) uloženého ve složce aplikace. Načítá 3 sloupce s prohozeným pořadím (název,poznámka,hodnota, tj. sloupce 0,3,1) a výsledek uloží do výsledné matice hodnot vData. Hodnoty ve výsledné matici jsou po řadě datových typů string, string a double. Hodnoty v souboru jsou odděleny středníkem a soubor neobsahuje v prvním řadku názvy sloupců.
Dim sParams, vData
sParams = "delimiter:semicolon;colnameheader:no;"
vData = Pm.FileCsvRead("#app:data.csv", "filecols:0,3,1;datatypes:string,string,double;", sParams)
If Pm.IsValid(vData) Then
  ... 'Když byla data v pořádku načtena.
End If
Navigace:
 
- Pm
 
- Abs
- Cos
- E
- Exp
- FileCsvRead
 
 
- LN2
- PI
- Pow
- Sin
- Tan
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice