Forum » Programiranje » Branje podatkov iz excela in parsanje v objekte [C# - ASP.NET]
Branje podatkov iz excela in parsanje v objekte [C# - ASP.NET]
zbenko ::
Pozdravljeni!
Problem:
Predpostavimo 3 različne merilne sisteme (recimo sistemi za merjenje športnikovih karakteristik (npr. ravnotežje, moč in vzdržljivost)), kjer se beleženi podatki shranjujejo v excelove tabele. Vsak merilni sistem ima npr.:
-4 parametre (npr. ime, priimek, rojstvo, šport),
-4 parametre odvisne od merilnega sistema (npr. naziv merilnega sistema, naziv meritve,...)
-N št. parametrov (N je med 20 in 40) odvisnih od merilnega sistema, kjer so beleženi rezultati meritve.
Torej na podlagi meritev se v našem primeru generirajo tri različne excelove datoteke, za vsak merilni sistem svoja, s svojimi parametri.
Primer excelove tabele iz enega merilnega sistema:
Drugi merilni sistem, ima drugačno strukturo podatkov - drugačni parametri (razen prvih štirih kolon).
Torej želim ustvariti objektno strukturo, kjer bi podatke iz excela prenesel v spletno aplikacijo, jih prebral in parsal v razrede. Kako se lotit tega? Da delam razred za vsak merilni sistem posebej odpade (1. ker je preveč parametrov --> preveč lastnosti, 2. lahko nanase tudi na 15-20 merilnih sistemov). Torej želel bi si nekakšno generično rešitev, kako podatke iz različnih excelovih datotek prenest v spletno aplikacijo. Kakšen predlog kje začeti?
Hvala.
Problem:
Predpostavimo 3 različne merilne sisteme (recimo sistemi za merjenje športnikovih karakteristik (npr. ravnotežje, moč in vzdržljivost)), kjer se beleženi podatki shranjujejo v excelove tabele. Vsak merilni sistem ima npr.:
-4 parametre (npr. ime, priimek, rojstvo, šport),
-4 parametre odvisne od merilnega sistema (npr. naziv merilnega sistema, naziv meritve,...)
-N št. parametrov (N je med 20 in 40) odvisnih od merilnega sistema, kjer so beleženi rezultati meritve.
Torej na podlagi meritev se v našem primeru generirajo tri različne excelove datoteke, za vsak merilni sistem svoja, s svojimi parametri.
Primer excelove tabele iz enega merilnega sistema:
Drugi merilni sistem, ima drugačno strukturo podatkov - drugačni parametri (razen prvih štirih kolon).
Torej želim ustvariti objektno strukturo, kjer bi podatke iz excela prenesel v spletno aplikacijo, jih prebral in parsal v razrede. Kako se lotit tega? Da delam razred za vsak merilni sistem posebej odpade (1. ker je preveč parametrov --> preveč lastnosti, 2. lahko nanase tudi na 15-20 merilnih sistemov). Torej želel bi si nekakšno generično rešitev, kako podatke iz različnih excelovih datotek prenest v spletno aplikacijo. Kakšen predlog kje začeti?
Hvala.
GupeM ::
Če te prav razumem, rabiš razred s:
- prvimi štirimi parametri, ki so pri vseh enaki
- Dictionary-jem (Map-om v javi), kjer bi imel shranjene vrednosti glede na ime stolpca (to je za tiste 4 parametrem ki so odvisni od merilnega sistema)
- Še en dictionary, kjer bi imel shranjene ostale parametre (20-40 njih). Če za zadnji primer ne potrebuješ imen, lahko uporabiš navaden seznam (List).
psevdokoda:
Če so tudi drugi štirje parametri vedno isti, lahko namesto Mapa uporabiš kar 4 spremenljivke, ki so ustreznega tipa.
Torej, namesto:
narediš:
Ni mi najbolj jasno, kaj točno te muči...
- prvimi štirimi parametri, ki so pri vseh enaki
- Dictionary-jem (Map-om v javi), kjer bi imel shranjene vrednosti glede na ime stolpca (to je za tiste 4 parametrem ki so odvisni od merilnega sistema)
- Še en dictionary, kjer bi imel shranjene ostale parametre (20-40 njih). Če za zadnji primer ne potrebuješ imen, lahko uporabiš navaden seznam (List).
psevdokoda:
class Razred { String firstName; String lastName; Date bDate; String sport; Map<String, String> params1; Map<String, Number> measurements; }
Če so tudi drugi štirje parametri vedno isti, lahko namesto Mapa uporabiš kar 4 spremenljivke, ki so ustreznega tipa.
Torej, namesto:
Map<String, String> params1
narediš:
String nazivMerilnegaSistema; String nazivMeritve; . . .
Ni mi najbolj jasno, kaj točno te muči...
zbenko ::
No najbrž ni bilo jasno napisano, da želim podatke, ki jih preberem iz excela, prepisati v relacijsko podatkovno bazo. Ter po njih kasneje tudi poizvedovat. Če kaj pomaga, uporabljalo bi se ORM orodje Entity Framework ali po potrebi NHibernate.
Torej glavni problem je, ker ne vem kako zastaviti rešitve za problem, kjer bom imel različne strukture excelovih tabel (ni določeno koliko) in shranjevanje podatkov iz tabel v PB.
Torej glavni problem je, ker ne vem kako zastaviti rešitve za problem, kjer bom imel različne strukture excelovih tabel (ni določeno koliko) in shranjevanje podatkov iz tabel v PB.
galu ::
GupeM ti je dal predlog za shemo "objekta" za prenos. Enostaven DB, navdihnjen z imeni iz slednjega in podporo za N atributov/vrednosti bi potem zgledal nekako tako:
Do mind, da je v tej shemi kar nekaj redundance, ki bi se jo dalo odstraniti in nasplošno bolj razčleniti DB.
Kako boš dejansko prenesel iz Excela in napolnil DB je pa druga stvar in ima ogromno različnih pristopov. Nekako se je kot standard uveljavila JSON notacija. Z njo serializiraš objekt v txt obliko (veliko jezikov ima za to že napisane knjižnice) in ga enostavno prebereš v spletni aplikaciji, kjer nafilaš DB. Lahko pa si seveda čisto svoj protokol/notacijo sestaviš, če ti bo lažje.
Do mind, da je v tej shemi kar nekaj redundance, ki bi se jo dalo odstraniti in nasplošno bolj razčleniti DB.
Kako boš dejansko prenesel iz Excela in napolnil DB je pa druga stvar in ima ogromno različnih pristopov. Nekako se je kot standard uveljavila JSON notacija. Z njo serializiraš objekt v txt obliko (veliko jezikov ima za to že napisane knjižnice) in ga enostavno prebereš v spletni aplikaciji, kjer nafilaš DB. Lahko pa si seveda čisto svoj protokol/notacijo sestaviš, če ti bo lažje.
Tako to gre.
Zgodovina sprememb…
- spremenil: galu ()
krneki0001 ::
Zakaj rabiš program za filat v bazo iz excela? Pa že sam excel ti to lahko naredi. En makro in je vse narejeno.
http://www.heritage-tech.net/908/insert...
http://www.heritage-tech.net/908/insert...
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | 6 pospeškometrov pri 1 kHz, kateri mikrokrmilnik?Oddelek: Elektrotehnika in elektronika | 1930 (1435) | srus |
» | Domače branje: Norbert Wiener: Cybernetics (1948) (strani: 1 2 )Oddelek: Novice / Domače branje | 23829 (20766) | PrihajaNodi |
» | Sonyjeve fotografske novosti (strani: 1 2 )Oddelek: Novice / Ostale najave | 16927 (13229) | technolog |
» | Canon EOS 1100D in EOS 600D (strani: 1 2 )Oddelek: Novice / Ostalo | 25185 (22367) | lurker |
» | Delovanje elektronske tehtniceOddelek: Elektrotehnika in elektronika | 2370 (2210) | snow |