Č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?
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?
Zpět do poradny Odpovědět na původní otázku Nahoru
Není možné data předem vyexportovat do CSV? S Excelovským formátem to bude asi docela problém.
Mám v zadání přímo z xls. Zde: http://weblog.clovicek.net/prispevek-cteni-dat-z-e xcelu-pomoci-net-c.html jsem něco málo o tom našel ale nefunguje mi to.
Co znamená nefunguje?
Že to je rozbitý.
No jsem v C# začátečník, ale potřebuji se to do práce naučit. Celou dobu dělám vše v php a skok do asp je pro mě docela skok. Takže třeba ten kód funguje, třeba něco dělám špatně já. Ale skutečně jsem to nerozchodil...
To jsi ale pořád nenapsal, co konkrétně ti nefunguje.
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ší.
Keď neuviedol konkrétne, tak predpokladám, že používa aktuálne technológie.
Tak ono je aktuální obojí. MVC není náhrada za ASP.NET, je to jenom jiná možnost.
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.