1. Základní informace
Export dat z DataGridu umožňuje uživatelům stáhnout data nahlížecí tabulky do souboru. Export se spouští ikonou v záhlaví nahlížecí tabulky a lze jej zakázat pomocí nastavení ovládacího prvku DataGrid. Detailní popis ovládacího prvku DataGrid je uveden v samostatné příručce Nahlížecí stránka - DataGrid nebo Editační formulář - DataGrid.
Podle typu nahlížecí tabulky probíhá export jedním ze tří způsobů:
- Řádková nahlížecí tabulka (na nahlížecí stránce i v editačním formuláři) a prvek History otevřou dialog exportu, ve kterém se volí formát a volby popsané v kapitolách 2 a 3.
- Statistická (agregační) nahlížecí tabulka, včetně statistického prvku LiteDataGrid, vyexportuje data bez dialogu rovnou do souboru XLSX – viz kapitola 4.
- Historie jednoho záznamu vyexportuje data bez dialogu rovnou do souboru XLSX – viz kapitola 5.
Export není dostupný v portletu, ve výběrovém dialogu (Picker), v panelu detailů, v prvku DataSet a u řádkového prvku LiteDataGrid.
1.1. Exportované záznamy
- Exportují se záznamy ze všech stránek nahlížecí tabulky, ne jen ze zobrazené stránky. Uplatní se podmínka databázového dotazu, časový úsek, filtry sloupců, složený filtr, hledaný výraz, řazení a nastavení „Načíst pouze prvních“.
- Označení záznamů zaškrtávacími poli export neomezuje.
- Je-li zaškrtnuté „Zobrazit pouze výsledky hledání“ a dotaz nemá nastavené „Načíst pouze prvních“, obsahuje export nejvýše jednu stránku výsledků; bez zadaného hledaného výrazu je export prázdný.
- Je-li nastavené „Načíst pouze prvních“ (a stejně tak v instanci bez platné licence, kde se načítá nejvýše 100 záznamů), nahlížecí tabulka nejprve načte daný počet záznamů a filtry sloupců a hledaný výraz uplatní až na ně. Export naopak nejprve vyfiltruje a teprve potom omezí počet záznamů. Při současném použití limitu a filtru nebo hledání proto může export obsahovat jiné záznamy, než zobrazuje nahlížecí tabulka.
- Je-li v databázovém dotazu nastavené „Odstranit záznamy s duplicitním“, duplicitní záznamy se odstraní i z exportu.
1.2. Exportované sloupce
- Bez volby „Všechny sloupce“ se exportují sloupce nahlížecí tabulky tak, jak si je uživatel přizpůsobil.
- S volbou „Všechny sloupce“ se exportují všechny databázové ovládací prvky zdrojové tabulky i tabulek připojených v dotazu, na které má uživatel právo, a navíc sloupce „(ID)“ a „(PID)“.
- Sloupce, jejichž hodnotu vidí jen vlastník nebo spoluvlastník záznamu, se neexportují nikdy.
- Hodnoty sloupců s heslem (identifikátor začínající „password“ nebo „md5“) se ve všech formátech nahradí znaky „*****“.
2. Formáty exportu
V dialogu exportu jsou nabídnuty tyto formáty:
2.1. Data (MS Excel)
- Výchozí formát při otevření dialogu exportu.
- Generuje soubor formátu Office Open XML (XLSX).
- V prvním řádku je název nahlížecí tabulky, pod ním hlavička sloupců. Hlavička používá zkrácený název ovládacího prvku, pokud je vyplněný.
- Datum se zapisuje jako datumová hodnota MS Excel, obsahuje-li čas, i s časem.
- Hodnoty šifrovaných sloupců TextArea a RichTextBox se nahradí znaky „*****“.
- Podporuje volbu zápatí se součty sloupců.
- Po úspěšném exportu spouští externí funkci „NETGenium.DataGrid2Excel“ s parametry: cesta k souboru, identifikátor dotazu ve tvaru „Q“ a ID dotazu, ID formuláře, datum od a datum do časového úseku nahlížecí tabulky.
- Pokud počet sloupců nebo řádků překročí limity definované v konfiguračních souborech „MaxExcelColumns.txt“ a „MaxExcelRows.txt“ umístěných v adresáři „Config“, export se automaticky přepne na formát CSV a externí funkce „NETGenium.DataGrid2Excel“ se nespustí.
2.2. Data (MS Excel 97-2003)
- Generuje soubor formátu BIFF8 (XLS).
- Obsah souboru je stejný jako u formátu XLSX, externí funkce „NETGenium.DataGrid2Excel“ se ale nespouští.
- Podléhá stejnému automatickému přepnutí na CSV jako formát XLSX v případě překročení limitů.
2.3. Data (CSV)
- Hodnoty jsou odděleny středníkem (;), řádky jsou ukončeny znaky CR LF.
- Kódování souboru je UTF-8 s BOM.
- Hlavička souboru obsahuje zkrácené názvy ovládacích prvků, pokud jsou vyplněné, jinak jejich názvy.
- Do uvozovek se uzavře jen hodnota, která obsahuje středník nebo konec řádku, nebo která uvozovkou začíná či končí; uvozovky uvnitř hodnoty se zdvojí.
- Datum se zapisuje ve formátu data uživatele včetně času se sekundami.
- Formát CSV je také cílový formát při automatickém přepnutí z XLSX nebo XLS.
2.4. Data (MS Word)
- Generuje soubor formátu Office Open XML (DOCX).
- Každý záznam je na samostatné stránce jako dvousloupcová tabulka – název sloupce a hodnota.
2.5. Data (MS Word 97-2003)
- Generuje soubor formátu DOC.
- Obsah souboru je stejný jako u formátu DOCX.
2.6. Data (HTML)
- Generuje soubor HTML obsahující data nahlížecí tabulky jako HTML tabulku.
- Hodnoty jsou před zápisem převedeny podle voleb exportu – cizí klíče, přílohy a HTML tagy.
- Hodnoty se do souboru zapisují tak, jak jsou uložené, bez kódování HTML znaků.
2.7. Data (TXT)
- Generuje textový soubor s daty nahlížecí tabulky jako tabulku se sloupci pevné šířky oddělenými znakem „|“.
- Hodnoty jsou před zápisem převedeny podle voleb exportu – cizí klíče, přílohy a HTML tagy.
- Kódování souboru je UTF-8.
2.8. Data (SQL)
- Generuje textový soubor se SQL příkazy.
- Pokud databázový dotaz nepoužívá spojení (JOIN), generují se INSERT příkazy pro každý řádek dat. Bez volby „Všechny sloupce“ obsahují příkazy sloupec „id“ a exportované sloupce nahlížecí tabulky, s volbou „Všechny sloupce“ všechny sloupce databázové tabulky.
- Pro každý sloupec s neprázdným databázovým názvem je vygenerován výpis ve formátu „sloupec = (hodnota1, hodnota2...)“ – jeden řádek na sloupec, hodnoty odděleny čárkou.
- Podporované datové typy hodnot: String (uvozovky), Integer, Long, Double, Date.
- Hodnota NULL je zapsána jako literál „NULL“.
- Kódování souboru je UTF-8.
2.9. Data (C#)
- Generuje textový soubor s C# kódem reprezentujícím data jako kolekci List<object[]>.
- Každý řádek dat je převeden na array.Add(new object[] { ... });.
- Podporované datové typy hodnot: String (escapované uvozovky), Integer, Long, Double, DateTime.
- Hodnota NULL je zapsána jako DBNull.Value.
- Výsledný soubor je uložen s příponou „txt“.
- Kódování souboru je UTF-8.
2.10. Přílohy (soubory/obrázky)
- Exportuje fyzické soubory příloh z exportovaných sloupců typu File a Image.
- Soubory jsou zabaleny do ZIP archivu.
- Název každého souboru v archivu je ve formátu: ID-{id záznamu}-{název sloupce}-{název souboru}.
- Z názvů souborů v archivu je automaticky odstraněna diakritika.
- Pokud žádný sloupec neobsahuje přílohy nebo všechny přílohy chybí na disku, export skončí chybou.
2.11. Data (XML)
- Generuje soubor XML se schématem.
- Obrázky vložené do hodnot prvku RichTextBox se vyexportují spolu s textem.
- Pro sloupce typu File a Image je přidán pomocný sloupec „{název sloupce} (Path + FileName)“ obsahující úplnou cestu k souboru na serveru a název souboru oddělené tabulátorem.
- Názvy sloupců v XML jsou upraveny tak, aby byly unikátní.
- ID záznamu obsahuje soubor jen s volbou „Všechny sloupce“.
2.12. Data + Přílohy (XML)
- Dostupné pouze pro uživatele s administrátorskými právy.
- Funguje stejně jako formát XML, ale pro sloupce typu File a Image přidává pomocný sloupec „{název sloupce} (Path + FileName + Base64)“ obsahující cestu k souboru, název souboru a Base64 obsah souboru, vše oddělené tabulátorem.
- Pokud soubor přílohy nelze přečíst, je Base64 část vynechána a sloupec obsahuje jen cestu a název.
- Výsledný soubor je uložen s příponou „xml“.
2.13. Data (JSON)
- Generuje soubor JSON s daty nahlížecí tabulky jako pole objektů.
- Obrázky vložené do hodnot prvku RichTextBox se vyexportují spolu s textem.
- Pro sloupce typu File a Image je přidán pomocný sloupec „{název sloupce} (Path + FileName)“ obsahující úplnou cestu k souboru na serveru a název souboru oddělené tabulátorem.
- Názvy sloupců v JSON jsou upraveny tak, aby byly unikátní.
- ID záznamu obsahuje soubor jen s volbou „Všechny sloupce“.
- Kódování souboru je UTF-8.
2.14. Data + Přílohy (JSON)
- Dostupné pouze pro uživatele s administrátorskými právy.
- Funguje stejně jako formát JSON, ale pro sloupce typu File a Image přidává pomocný sloupec „{název sloupce} (Path + FileName + Base64)“ obsahující cestu k souboru, název souboru a Base64 obsah souboru, vše oddělené tabulátorem.
- Pokud soubor přílohy nelze přečíst, je Base64 část vynechána a sloupec obsahuje jen cestu a název.
- Výsledný soubor je uložen s příponou „json“.
3. Možnosti exportu
V dialogu exportu jsou k dispozici tyto volby:
3.1. Všechny sloupce
- Pokud je zaškrtnuto, exportují se všechny sloupce popsané v kapitole 1.2, nejen sloupce aktuálně zobrazené v nahlížecí tabulce.
- U prvku History je tato volba vždy zapnutá a nelze ji měnit. U historie celého formuláře se exportují sloupce, které si uživatel v historii přizpůsobil.
- Pokud má nahlížecí tabulka zaškrtnuté „Zakázat uživatelské přizpůsobení“, tato volba je automaticky vypnutá bez ohledu na zadání uživatele.
3.2. Zakázat vyhodnocení externích funkcí
- Pokud je zaškrtnuto, nespustí se externí funkce „NETGenium.DataTable“, která smí načtená data upravit, a u skrytých textových polí jen ke čtení se nevyhodnotí hodnoty ve tvaru „ngef2(...)“.
3.3. Odstranit HTML tagy
- Pokud je zaškrtnuto, jsou z hodnot odstraněny HTML tagy před zápisem do výstupního souboru.
- Platí pro formáty: XLSX, XLS, CSV, HTML, TXT.
- Ve formátech XLSX a XLS navíc přeloží hodnoty prvků ComboBox, ListBox a Radio do jazyka uživatele a zaokrouhlí hodnoty typu Currency na dvě desetinná místa.
3.4. Cizí klíče jako celá čísla (bez textové hodnoty)
- Pokud je zaškrtnuto, jsou hodnoty sloupců s cizím klíčem (ForeignKey), které mají zaškrtnuté „Zobrazovat hodnotu v nahlížecí tabulce bez nutnosti joinování“, exportovány jako číselné identifikátory místo zobrazovaného textu. Ostatní cizí klíče se exportují jako číselné identifikátory vždy.
3.5. Přílohy jako celá čísla (bez názvu souboru)
- Pokud je zaškrtnuto, jsou hodnoty sloupců s přílohami (File a Image) exportovány jako číselné identifikátory místo názvů souborů.
3.6. Zobrazit součty sloupců
- Dostupné pro formáty XLSX a XLS.
- Pokud je zaškrtnuto, je do exportovaného souboru přidán řádek zápatí s agregovanými hodnotami (součty apod.) pro každý sloupec, u kterého zápatí není skryté. Řádek se přidá jen tehdy, obsahuje-li export více než jeden záznam.
4. Export statistické nahlížecí tabulky
- Ikona exportu stáhne data rovnou do souboru XLSX, bez dialogu exportu.
- Soubor obsahuje název nahlížecí tabulky, časový úsek a použité filtry, pod nimi data a vždy řádek součtů, i když ho nahlížecí tabulka nezobrazuje.
- Nastavení „Načíst pouze prvních“ omezí jen exportované řádky; součty zahrnují všechny řádky.
- Automatické přepnutí na formát CSV se neuplatní.
- Po exportu se spustí externí funkce „NETGenium.DataGrid2Excel“ se stejnými parametry jako u formátu XLSX.
- Export lze zakázat polem „Zakázat export dat“ statistické nahlížecí tabulky. U statistického prvku LiteDataGrid se toto pole v nastavení prvku nenabízí.
5. Export historie jednoho záznamu
- V historii změn jednoho záznamu stáhne ikona exportu data rovnou do souboru XLSX, bez dialogu exportu.
- Zákaz exportu se na tento export nevztahuje, automatické přepnutí na formát CSV se neuplatní a export se nezaznamenává do protokolu exportů.
6. Automatické přepnutí formátu
- Pokud je v dialogu exportu zvolen formát XLSX nebo XLS a zároveň platí alespoň jedna z podmínek:
- Počet exportovaných sloupců překračuje limit definovaný v konfiguračním souboru „MaxExcelColumns.txt“ v adresáři „Config“.
- Počet exportovaných řádků překračuje limit definovaný v konfiguračním souboru „MaxExcelRows.txt“ v adresáři „Config“.
- Dojde k automatickému přepnutí exportu na formát CSV.
- K přepnutí dochází před vygenerováním souboru.
7. Logování exportů
- Každý export z dialogu exportu a z dialogu „MS Excel Import/Export“ je zaznamenán do souboru „Export-{rok}-{měsíc}.log“ v adresáři „Logs“.
- Jsou zaznamenány dva záznamy: jeden po provedení databázového dotazu (s počtem řádků a textem dotazu), druhý po vygenerování souboru (s počtem řádků a názvem souboru).
- Zaznamenávají se: jméno uživatele, doba trvání operace, počet dotčených řádků, text dotazu nebo název vygenerovaného souboru.
- Export statistické nahlížecí tabulky se zaznamená jedním záznamem.
8. Bezpečnost
- Dialog exportu dostává databázový dotaz nahlížecí tabulky v zašifrované podobě, svázaný s nahlížecí tabulkou, ze které byl otevřen. Dotaz jiné nahlížecí tabulky dialog odmítne.
- Kontrola přihlášení a ochrany před Session Fixation probíhá při každém požadavku.
- Export lze zakázat na úrovni nahlížecí tabulky zaškrtnutím pole „Zakázat export dat“ v nastavení ovládacího prvku DataGrid. Zákaz se kontroluje i na serveru a nevztahuje se na uživatele s administrátorským oprávněním.
- Exportovat může i anonymní uživatel, pokud export není zakázaný.
- Formáty XML a JSON s Base64 obsahem příloh jsou dostupné výhradně uživatelům s administrátorskými právy; oprávnění se kontroluje i na serveru.
- Konfigurační soubor „DenyExport.txt“ v adresáři „Config“ se týká jen exportu aplikací, na export z nahlížecí tabulky nemá vliv.