Č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?
Předmět | Autor | Datum |
---|---|---|
Na jednoduché čítanie dát z Excelu môžeš použiť ADO.NET (napr. Microsoft Jet OLE DB). Ak tam máš nie… los 10.04.2012 20:10 |
los | |
Mohl bych prosím poprosit o nějaký krátký příklad? Isair 10.04.2012 20:25 |
Isair | |
Píšem priamo sem, tak tam môžu byť chyby. Vychádzal som z príkladov na MSDN. Je to klasický ADO.NET… los 10.04.2012 20:52 |
los | |
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… nový Isair 11.04.2012 19:49 |
Isair | |
Prístup pomocou reader-a je efektívny spôsob, ako prečítať postupne všetky riadky. Po posunutí reade… poslední los 11.04.2012 20:50 |
los |
Zpět do poradny Odpovědět na původní otázku Nahoru
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.