Jag har ett litet projekt i vilket ett Excel-ark skall läsas in till websiten med hjälp av ASP. Hej, inläsningsmodulen fungerar precis som du upptäckt att namnen är tagna från den första kolumnen. Om man tittar på importen i Excel från exempelvis en skv-fil eller liknande kan man där välja bort att använda första kolumnen som fältnamn. Troligen går detta även att göra i connectionsträngen när du ansluter mot excel-arket. Se om du kan hitta något där och posta det gärna i detta inlägg så andra kan ta del av informationen. Lycka till! Hej Pelle - och tack för Ditt snabba svar! Databasdrivrutinen för Excel har varit buggig så länge den funnits och den värsta buggen har varit känd sen 1997 och är fortfarande inte fixad.Problem att med ASP läsa alla kolumner från Exceldokument
Efter att ha läst Pelles fina artikel om hur detta går till, kunde jag efter cirka 5 minuter
få min egen applikation att felfritt utföra exakt det jag ville - nämligen att läsa in arket
bestående av 7 kolumner och cirka 800 rader.
Vackert, perfekt, otroligt enkelt, tyckte jag - så länge jag körde detta i min lokala maskin.
Jag var dock inte lika överväldigad sedan jag flyttat ut applikationen på intranätet och där
genomfört det första testet.
Det visade sig att då Excelfilen saknade värde i en av kolumnerna i första raden, så lästes
aldrig den kolumnen in överhuvudtaget för resterande 800 rader. Genom tidigare erfarenheter
med inläsning av textfiler till t ex Access - förstod jag att om jag handgripligen går in i Excelfilen och matar in en förstarad med värden i samtliga 7 kolumner, då får jag det att fungera.
Detta är dock ingen lösning som känns rolig att leverera till användarna.
Fakta:
Excelfilen har rubriker till samtliga kolumner i första raden.
Jag läser med selectsatsen - SELECT * FROM [fliknamn$]
I min lokala maskin (Windows 2000, Access 2000) funkar det alldeles ypperligt.
Min fråga är då följande:
Vad kan detta bero på och finns det någon som vet hur man kommer förbi detta problem?
Kanske man i selectsatsen kan formatera varje fält så att man tvingar dessa att läsa i visst format.
T ex - SELECT integer(fld1), integer(fld2), varchar(fld3)... osv
Tacksam för hjälp!Sv: Problem att med ASP läsa alla kolumner från Exceldokument
Sv:Problem att med ASP läsa alla kolumner från Exceldokument
Jag kanske uttryckte mig något oklart då jag refererade till första raden m m.
Här kommer ett nytt försök:
Första raden innehåller rubriker, och det går alldeles utmärkt att ställa in om man har rubriker eller ej genom att skriva HDR=Yes eller HDR=No i connectionsträngen.
När jag i mitt inlägg skrev "..saknade värde i en av kolumnerna i första raden..." - menade jag den första raden som innehåller data (i mitt fall rad nr 2, då översta raden innehåller rubriker).
Jag gör ett försök att beskriva Excel-arket i nedanstående tabell:
<code>
Nr Start Slut AntalAktiv AntalInaktiv Namn
1 10 19 10 Henrik
2 20 24 5 Pelle
3 30 32 3 Klas
4 40 49 10 Elvira
</code>
I min lokala maskin fungerar det alldeles utmärkt att läsa in ovanstående tabell - alla värden läses in som de skall.
Problemet som uppstår på intranätet är det att värdet 3 i kolumnen AntalInaktiv på den 3:e posten (Klas) läses inte in överhuvudtaget pga att den första posten (Henrik) INTE innehåller något värde i den kolumnen.
Skulle jag däremot tvinga in en siffra (t ex 999) i första postens AntalInaktiv-kolumn - då funkar det även för resterande poster (se nedan).
<code>
Nr Start Slut AntalAktiv AntalInaktiv Namn
1 10 19 10 999 Henrik
2 20 24 5 Pelle
3 30 32 3 Klas
4 40 49 10 Elvira
</code>
Min slutsats är att - Om kolumnen INTE genererar ett värde i första posten, då kommer kolumnen ej heller i fortsättningen att läsas in, eller är det möjligen så att en tidigare (senare) version av komponent eller programvara på intranät-servern kan ställa till det för mig? (Kanske Microsoft.Jet.OLEDB.4.0 eller nåt)
Tacksam för förslag på lösning!Sv: Problem att med ASP läsa alla kolumner från Exceldokument
Enligt dokumentationen kan man använda parametern "MaxScanRows" för att ange hur många kolumner som skall användas för att avgöra om en kolum innehåller tal eller text (default är 8).
Denna parameter fungerar inte utan det blir alltid 8 om man inte går in i registret och sätter ett nytt värde där vilket då kommer att gälla för alla program på datorn.
Det finns inte heller något sätt att komma runt kolumnernas typ. Om Excel tycker att en kolumn skall vara text så blir alla numeriska fält i den kolumnen NULL.
Det jag brukar göra är att dölja rad 2 och kanske några till och att på dessa rader skriva in värden så att det tolkas rätt. Någon gång har jag i installationsprogrammet satt registernyckeln MaxScanRows=0 (alla rader).
Bästa sättet vore om man på något enkelt sätt kunde konvertera xls filer till XML och läsa in dem den vägen.