hvordan kan du analysere en fil (.xls) excel lagret i en VARBINARY i MS SQL 2005?

stemmer
3

problem

hvordan du best kan analysere / tilgang / extract Excel-fil data som er lagret som binære data i en SQL 2005 felt?

(Slik at alle data kan til slutt bli lagret i andre felt av andre tabeller).

bakgrunn

utgangspunktet, er vår kunde som krever et stort volum av ordrik data fra sine brukere. Dessverre, kan våre kunder ikke krever noen form for db eksport fra deres bruker. slik at våre kunder må oppgi en slags UI for deres bruker å legge inn data. UI vår kunde besluttet ville være akseptabelt for alle sine brukere var excel som den har en rimelig robust UI. så gitt alt dette, og vår kunde trenger disse dataene analyseres og oppbevares i db automatisk.

Vi har prøvd å overbevise våre kunder at brukerne vil gjøre dette nøyaktig en gang og deretter insistere på db eksport! men kunden kan ikke kreve db eksport av sine brukere.

  • vår kunde som krever oss å analysere en Excel-fil
  • kundens brukere bruker excel som den beste brukergrensesnitt for å angi alle de nødvendige data
  • brukerne får blank excel maler som de må fylle ut
    • disse malene har et fast antall unike navn faner
    • disse malene har et antall faste områder (celler) som må fullføres
    • disse malene har også områder hvor brukeren vil sette opp til tusenvis av identisk formatert rader
  • når du er ferdig, er det excel-filen sendes fra brukeren ved standard html opplasting
  • kunde lagrer denne filen rå i sin SQL database

gitt

  • en standard Excel ( XLS) fil (opprinnelig format, ikke komma eller tab separert)
  • filen er lagret rå i en varbinary(max)SQL 2005 felt
  • Excel-filen data trenger ikke nødvendigvis å være uniform mellom rader - det vil si, vi kan ikke bare anta en kolonne er av samme datatype (for eksempel kan det være radoverskrifter, kolonneoverskriftene, tomme celler, ulike formater, ...)

krav

  • kode helt innenfor SQL 2005 (lagrede prosedyrer, SSIS?)
  • kunne få tilgang til verdiene på noen regneark (tab)
  • være i stand til å få tilgang til verdiene i en hvilken som helst celle (uten formel data eller dereferencing nødvendig)
  • celleverdier må ikke antas å være uniform mellom radene - ie, kan vi ikke bare anta en kolonne er alle den samme datatype (for eksempel, kan det være radoverskrifter, kolonneoverskriftene, tomme celler, formler, forskjellige formater, ...)

preferanser

  • ingen filsystem tilgang (ingen skriving midlertidige XLS-filer)
  • hente verdier i definert format (f.eks faktiske datoen verdi i stedet for en rå tall som 39876)
Publisert på 17/09/2008 klokken 01:16
kilden bruker
På andre språk...                            


5 svar

stemmer
1

Det høres ut som du prøver å lagre en hel database bord inne et regneark og deretter i en enkelt tabell felt. Ville det ikke være enklere å lagre data i en database tabell til å begynne med, og deretter eksportere det som en XLS når det er nødvendig?

Uten å åpne opp en forekomst Excel og ha Excel Løs regneark referanser jeg er ikke sikker på at det er gjennomførbart i det hele tatt.

Svarte 17/09/2008 kl. 01:21
kilden bruker

stemmer
3

Min tanke er at noe kan gjøres, men det er en pris å betale. I dette spesielle tilfellet, synes prisen å bli for høy.

Jeg har ikke en testet løsning for deg, men jeg kan dele hvordan jeg ville gi mitt første forsøk på et problem som det.

Min første tilnærming ville være å installere excel på SQLServer maskinen og kode noen samlinger for å konsumere filen på rader med excel API og legg dem på SQL Server som monteringsprosedyrer.

Som jeg sa, dette er bare en idé, jeg har ikke detaljene, men jeg er sikker på at andre her kan utfylle eller kritisere min idé.

Men min virkelige råd er å revurdere hele prosjektet. Det gir ingen mening å lese tabelldata på binærfiler som er lagret på en celle i en rad i en tabell på database.

Svarte 17/09/2008 kl. 01:40
kilden bruker

stemmer
2

Dette ser ut som en "Jeg ville ikke starte herfra" type spørsmål.

Den "installere Excel på serveren og starte koding" Svaret ser ut som den eneste veien, men det bare må være verdt å utforske alternativer først: det kommer til å være smertefullt, dyrt og tidkrevende.

Jeg føler sterkt at vi ser på et "krav" som er svaret på feil problem.

Hva virksomheten problemet skaper dette behovet? Hva driver det? Prøv Fem hvorfor som en mulig måte å utforske historien.

Svarte 17/09/2008 kl. 08:12
kilden bruker

stemmer
1

Kan du skrive VARBINARY til en Raw Filbestemmelsessted? Og deretter bruke et Excel-kilde som input til hva trinnet er neste i dine presedens begrensninger.

Jeg har ikke prøvd det, men det er det jeg ville prøve.

Svarte 08/01/2009 kl. 18:07
kilden bruker

stemmer
1

Vel, synes hele oppsettet litt vridd :-) som andre allerede har påpekt.

Hvis du virkelig ikke kan endre de krav og hele oppsettet: hvorfor ikke utforske komponenter som Aspose.Cells eller Syncfusion XlsIO , innfødte NET komponenter, som tillater deg å lese og tolke innfødte Excel (XLS-filer). Jeg er ganske slik med en av de to, bør du være i stand til å lese binær Excel inn en Memory og mater den inn i en av disse Excel-lesing komponenter, og drar av sted.

Så med litt av .NET utvikling og SQL CLR, tror jeg dette skal være gjennomførbart - ikke sikker på om det er den beste måten å gjøre det, men det skal fungere.

Svarte 18/02/2009 kl. 15:06
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more