Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202

    [ASP.NET 4] OleDbConnection XLS

    Ciao a tutti,

    Sto utilizzando l' oledbconnection per estrarre dati da un xls e metterli in un datatable per poi elaborarli.
    La connection string è : Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};
    Extended Properties='Excel 8.0;HDR={1}

    Il problema avviene quando tento di leggere una cella con formato dati "data".
    Nel dt mi risulta vuota.
    Vi è mai capitato?
    Non riesco proprio a capire il perchè, se invece converto il formato cella come testo lo leggo correttamente.

    Grazie mille.
    Ciao a tutti
    Che mestiere difficile.....essere da soli ancora di più

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Se stai usando un codice di questo tipo,

    codice:
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Dim con As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("comuni.xls") + ";Extended Properties='Excel 8.0;HDR=Yes;'"
    
    
            Using connection As New OleDb.OleDbConnection(con)
                connection.Open()
                Dim command As New OleDbCommand("SELECT * from [Foglio1$]", connection)
    
    
                Using dr As OleDbDataReader = command.ExecuteReader()
                    gv.DataSource = dr ' bind del foglio excel alla grid
                    gv.DataBind()
                End Using
    
    
                Dim arrComuni As New ArrayList()
                Using dr As OleDbDataReader = command.ExecuteReader()
                    While dr.Read()
                        arrComuni.Add(dr("comune").ToString.Trim)
                    End While
                End Using
            End Using

    hai provato a cambiare la SELECT convertendo il campo ?

  3. #3
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Dopo tuo suggerimento ho fatto progressi, ma non sono riuscito a trovare una soluzione.

    Si utilizzo questa SQL
    SELECT * From [" & SheetName & "$]

    Se io faccio questa SQL
    SELECT * FROM [" & SheetName & "$K9:K15]
    Che sono le celle che contengono la data riesco ad acquisirla.

    Ho cercato di fare la conversione come suggerito da te ma purtroppo non sono riuscito

    SELECT convert(datetime, K9:K15, 103) FROM [" & SheetName & "$].
    Errore nell'Sql.

    Il problema che il file xls che devo trattare è un pò strano.
    Non è una tabella ben impostata.

    Ha le prime 9 righe che contengono dati sparsi qua e là.
    Poi dalla riga 9 in poi la tabella che interessata e l'intervallo ad esempio delle date è k9:K...n, non so dove finisce.

    Mi viene da pensare che il modo più semplice sarebbe convertire tutte le celle in formato testuale e poi fare i controlli lato server.

    Tu cosa suggerisci?

    Grazie dell' aiuto.
    Che mestiere difficile.....essere da soli ancora di più

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    beh gli sheets devono essere come le tabelle, non mi risulta che puoi fare un misto, a meno che non punti la query ad una certa riga, ma mi sembra una forzatura.

    fallo lato server

    se puo' servire, questo e' un articolo con i vari string.format (ma non c'e' il tuo caso).
    http://www.guru4.net/articoli/format-string/
    Ultima modifica di djciko; 08-06-2015 a 14:41

  5. #5
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    ok immaginavo fosse la soluzione più rapida.
    Grazie mille per l'aiuto, almeno ho capito dove stava il problema.
    Che mestiere difficile.....essere da soli ancora di più

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    prova anche con CDate in SQL, perche' la funzione Convert è di Sql Server e l'esecuzione è su un foglio Excel.

    http://stackoverflow.com/questions/1...time-ms-access

  7. #7

  8. #8
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Si CDate ha funzionato.
    Grazie mille.
    Che mestiere difficile.....essere da soli ancora di più

  9. #9
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Ciao e scusate se riesumo una vecchia discussione, ma mi pareva appropriato postare una soluzione trovata che ti permette di leggere in una sola volta tutte le celle a prescindere dal formato con cui sono state salvate.
    Le celle che hanno un formato personalizzato o formato data vengono di fatto lette come string.
    E' stato sufficiente aggiungere questa stringa nelle "Extended Properties" della stringa di connessione nel webconfing :

    Excel 8.0;HDR=Yes;IMEX=1

    Riporto mia stringa di connessione

    <add name="Excel03ConString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source={0};Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'"/>

    Ciao a tutti
    Che mestiere difficile.....essere da soli ancora di più

  10. #10
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Quote Originariamente inviata da Fractals87 Visualizza il messaggio
    Ciao e scusate se riesumo una vecchia discussione, ma mi pareva appropriato postare una soluzione trovata che ti permette di leggere in una sola volta tutte le celle a prescindere dal formato con cui sono state salvate.
    Le celle che hanno un formato personalizzato o formato data vengono di fatto lette come string.
    E' stato sufficiente aggiungere questa stringa nelle "Extended Properties" della stringa di connessione nel webconfing :

    Excel 8.0;HDR=Yes;IMEX=1

    Riporto mia stringa di connessione

    <add name="Excel03ConString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source={0};Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'"/>

    Ciao a tutti

    dai miei vecchi (vecchissimi) appunti.

    HDR=Yes;" indicates that the first row contains columnnames, not data
    "IMEX=1;" tells the driver to always read "intermixed" data columns as text

    NON SI PUO' SCRIVERE CON IMEX=1

    naturalmente bisogna controllare, magari ho sbagliato
    Pietro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.