6 messaggi dal 24 settembre 2005
no era giusta la prima che ti ho mandato, prova così.:

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & nomeFile & "; Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";
12 messaggi dal 04 gennaio 2007
grande gianluca mi hai ricondotto sulla strada giusta
eccola la stringa magica (la tua mi dava ancora errori di chiusura):
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & nomeFile & "; Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'"

il problema permane se i primi N campi del foglio Excel contengono solo numeri o solo stringhe considerato che il driver ISAM analizza solo quelle per fare la stima dell'intera colonna.
bisognerebbe trovare il modo di fargli analizzare tutta la colonna ma per adesso mi accontento di questa soluzione
Modificato da Mauri77 il 02 febbraio 2007 19.10 -
6 messaggi dal 24 settembre 2005
Scusa ma mi sono accorto solo ora che la sintassi che usavi era per Vb io ho fatto un minestrone fra C# e Vb qundi ricapitolado:
Per vb la stringa di connessione è:
connstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & nomeFile & "; Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'"


per C#
connstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + nomeFile + "; Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"";


Non capisco cosa intendi quando dici
il problema permane se i primi N campi del foglio Excel contengono solo numeri o solo stringhe considerato che il driver ISAM analizza solo quelle per fare la stima dell'intera colonna


Io ho creato una mini windowsForm che legge un foglio Excel tipo fattura (quindi con intestazioni numeriche e campi stringa e importo) e riesco a leggare senza problemi tutti i campi.
Per fare questo inserisco tutto il contenuto del folgio excel in una datatable che poi vado ad interrogare dopo il caricamento.

Fammi sapere se ti servono ulteriori dritte.
12 messaggi dal 04 gennaio 2007
Mettiamo che hai settato TypeGuessRows = N.
Intendo dire che se nelle prime N celle della colonna Excel che devi leggere ci sono solo valori numerici e nelle restanti celle ci sono valori stringa questi ultimi verranno visti come NULL, visto che il Driver ISAM facendo una stima sui primi N valori ha deciso che quella colonna può contenere solo valori numerici.
Che è poi il problema che segnala la stessa Microsoft:
Setting IMEX=1 tells the driver to use Import mode. In this state, the registry setting ImportMixedTypes=Text will be noticed. This forces mixed data to be converted to text. For this to work reliably, you may also have to modify the registry setting, TypeGuessRows=8. The ISAM driver by default looks at the first eight rows and from that sampling determines the datatype. If this eight row sampling is all numeric, then setting IMEX=1 will not convert the default datatype to Text; it will remain numeric.

E' un caso sfigato ma a me può capitare visto che la mia colonna Excel contiene codici ISBN a 10 cifre che sono numerici nel 90% dei casi.
Ciao Gianluca grazie ancora.
p.S: ecco perchè non tornava mai la tua sintassi! Tu stai programmando in C#.NET! La mia sintassi è quella di VBScript che in questo caso coincide con quella di VB

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.