

Čtení dat z Excelu v ASP.NET C#
Zdravím všechny. Mám takový problém, potřeboval bych v ASP.NET jazykem C# vytáhnout data z excelovské tabulky xls tak, aby mi kód z nich vytvořil html tabulku. Poradíte někdo prosím?
Na jednoduché čítanie dát z Excelu môžeš použiť ADO.NET (napr. Microsoft Jet OLE DB). Ak tam máš niečo komplikovanejšie, tak si užiješ s dátovými typmi.
Existujú aj knižnice, ktoré nepotrebujú pre prístup k dátam v Exceli nainštalovaný samotný Excel (napr. Excel Data Reader).
S novšou verziou Office môžeš použiť Open XML SDK - na MSDN je k tomu veľa príkladov.
Dá sa to samozrejme riešiť aj cez COM tak, ako to je v tom odkaze, ktorý si napísal. V ASP.NET-e je to síce Microsoftom oficiálne neodporúčaný spôsob, ale keď akceptuješ riziká a dáš si pozor na pár vecí, tak sa to dá. Ten príklad v tom odkaze si ale na tých pár vecí pozor nedáva, takže na tvojom mieste by som skúsil niektorú z predchádzajúcich možností.
Mohl bych prosím poprosit o nějaký krátký příklad?
Píšem priamo sem, tak tam môžu byť chyby. Vychádzal som z príkladov na MSDN. Je to klasický ADO.NET kód:
Prípadne ešte môžeš použiť Linq to Excel.
Použil jsem nakonec tvůj kód, každopádně kde je ta výstupní hodnota? Je to v proměnné value? Jak se pohybuji mezi bunkami? Opravdu jsem z toho uplně blbej...
Prístup pomocou reader-a je efektívny spôsob, ako prečítať postupne všetky riadky. Po posunutí reader-a volaním metódy Read máš prístup k hodnotám v nasledujúcom riadku. Metódou GetValue sa dostaneš k hodnote v požadovanom stĺpci. Sú aj metódy GetInt32, GetString a pod., pomocou ktorých sa tiež dostaneš k hodnote daného typu (v prípade nesprávneho typu to skončí výnimkou).
V tom príklade je vo value hodnota z prvého stĺpca. Keď si to odkrokuješ vnútri toho cyklu, tak si môžeš pozrieť, čo vráti napr. reader.GetValue(1), akého typu, aký je počet polí v reader-i a pod. Ak by si si prečítal tie odkazy, tak by tam zrejme bolo aj to, ako sa dostať k schéme tabuľky, ako prečítať údaje z nejakého rozsahu namiesto celého hárku, atď.
Ďalšia možnosť je naplniť to do DataTable, ako to bolo v iných príkladoch. DataTable je taká malá jadrová elektráreň, ktorá sa hodí keď chceš pracovať s dátami (meniť ich) oddelene od databázy. Pre čítanie je lepší ten DataReader.
Tak jsem si poradil pomocí tohoto návodu: watch celé zadání ale je, aby to vytvářelo html tabulku z těch dat, tedy jak by se to dalo?
Máš dáta, tak si ich pošleš do view-u, tam ich preiteruješ a vygeneruješ HTML kód. Nechápem, s čím máš problém. Tabuľka v HTML sa robí pomocou tagov table, tr a td.
Jak ta data rozházet, ale asi už vím...
Napr. ak by som to robil s tým DataReader-om, tak tam, kde som dal komentár atď., tak tam by som vytváral inštanciu nejakého modelu, ktorý by som si ukladal do listu.
Do view-u by som potom poslal len pole modelov:
To jde ale o to jestli chce klasické ASP.NET nebo MVC. I když MVC je pro tyhle účely určitě lepší.
konkrétně asp.net
Konkrétne ASP.NET je aj custom HTTP handler. Existuje ASP.NET Web Forms, ASP.NET MVC (1, 2, 3) a pod.
Vo Web Forms použiješ napr. asp:Table a použiješ data binding, viď Google.
ASP.NET Web Forms, mě nikdo ani neřekl v čem to mám udělat, ale webforms mám defaultní
Ja by som si napr. v súčasnosti Web Forms nezvolil. Vlastne od čias, keď vyšla prvá verzia ASP.NET MVC, by som sa už k Web Forms nevracal. Ak len začínaš tieto stránky, tak by som na tvojom mieste switch-ol do ASP.NET MVC. Ak začínaš celkovo s ASP.NET, tak s Web Forms by som ani nezačínal, ak sa nechceš vyslovene venovať Web Forms-om. Niekedy je síce Web Forms nevyhnutnosť, ale ak je cieľom robiť klasické (moderné) webové stránky, tak ASP.NET MVC je ta správna cesta.