152 messaggi dal 15 luglio 2003
Buongiorno ragazzi, nella mia applicazione web importo dei dati da un file excel.
Per effettuare questa importazione utilizzo il metodo classico che utilizza un
OleDbConnection (al file excel), un oledbDatadapter e poi tramite il metodo fill dell'oledbdataAdapter popolo un dataSet tramite il quale faccio altre operazioni.
Utilizzando questo metodo ho rilevato 2 grandi inconvenienti:

1 - ogni volta che provo a recuperare i dati dal file devo conoscere a priori il nome del foglio su cui voglio lavorare.

OleDbDataAdapter cmd = new OleDbDataAdapter("select * from ["+foglioXsl+"$]", oCnn);

E' possibile recuperare il nome del foglio volta per volta, un qualcosa ad esempio che mi restituisca il nome del primo foglio del file excel per poi utilizzarlo nella select?


2 - Se su una colonna del file excel ci sono dati di tipo diverso non vengono recuperati correttamente.
Se ad esempio una colonna contiene sia celle con soli numeri che con caratteri alfanumerici, uno dei due tipi non viene recuperato e nel campo del dataSet mi ritrovo un valore nullo.
E' possibile risolvere questo inconveniente, o devo pretendere che chi mi fornisce il file mi dia solo colonne monoFormato?

Vorrei evitare di utilizzare le librerie dedicate, per non avere la necessità di installare excel sul server.

Grazie
438 messaggi dal 04 agosto 2002
Contributi
punto 1) devi usare il GetOleDbSchemaTable, un esempio lo trovi quì: http://www.codeproject.com/KB/aspnet/getsheetnames.aspx

punto 2) puoi impostare la proprietà IMEX delle extended properties a 1:
Extended Properties="Excel 8.0;HDR=Yes;IMEX=1"
La cosa funziona più o meno così: il provider si legge le prime otto righe, in base a quelle decide per tutte le altre, se testo o se numeriche. Impostando l'imex a 1 forzi ad interpretare tutte le righe come testo (e a quel punto ti fai tu i controlli e le conversioni del caso).

Imho è molto molto meglio se risolvi il problema alla fonte e richiedi che il foglio dati sia pulito.

ciao,
vladi
152 messaggi dal 15 luglio 2003
Ciao Vladi e grazie per l'aiuto.
Utilizzando gli attributi che mi hai suggerito nella stringa di connessione al file excel (HDR=Yes;IMEX=1), quando apro la connessione, il programma mi da questo errore:

Impossibile trovare ISAM installabile.

Devo installare qualche dll?
In questo caso dovrò farlo anche sul server su cui gira l'applicativo?
438 messaggi dal 04 agosto 2002
Contributi
ecco, lo sapevo che non sarebbe stato painless ;)

Potrebbe essere un errore banale nella stringa di connessione, prova a vedere se risolvi leggendo quì: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=815084&SiteID=1

vladi
152 messaggi dal 15 luglio 2003
vladimiro ha scritto:
ecco, lo sapevo che non sarebbe stato painless ;)

Potrebbe essere un errore banale nella stringa di connessione, prova a vedere se risolvi leggendo quì: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=815084&SiteID=1

vladi


Grazie dell'indicazione vladi, ma anche seguendo i consigli che ho trovato sull'articolo non sono riuscito a risolvere il problema... che disdetta!!!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.