none
Errore lettura Excel con OleDb RRS feed

  • Domanda

  • Salve 

    sto cercando di leggere dei file xls utilizzando oledb

    La stringa di connessione che uso e'la seguente:

    string connectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=NO;IMEX=1;'", xlsFileInfo.FullName);

    Funziona perfettamente, solo che quando cerco di aprire alcuni file sull'apertura della connessione mi esce il messaggio "Impossibile decifrare il file". Questi file con excel li apro senza problemi.

    Qualcuno sa indicarmi cosa possa essere??

    Ho provato anche mettendo excel 12 nelle extended properties ma niente.

    Grazie.

    sabato 12 marzo 2016 10:22

Risposte

Tutte le risposte

  • Verifica la stringa di connessione e gli esempi qui:

    http://www.connectionstrings.com/


    Sabrina C. - http://www.dotnetwork.it

    lunedì 14 marzo 2016 16:40
  • Ho fatto le verifiche e quella che uso va bene.

    Quello che ho notato e che i file su cui ho problemi hanno la protezione della cartella di lavoro

    giovedì 17 marzo 2016 07:00
  • Ho trovato . Nella stringa di connessione bisogna impostare la password.

    Solo che ora mi da l'errore:

    Impossibile avviare applicazione. Il File di informazione sul gruppo di lavoro e' mancante o aperto in modo esclusivo da un'altro utente.

    in realta' il fie non e'utilizzato da nessuno.

    Quale puo' essere il problema?

    Grazie

    giovedì 17 marzo 2016 07:21
  • Risolto in parte

    sui file xlsx se al posto di "Password" utilizzo 

    "Jet OLEDB:Database Password"

    funziona . Pero' se il file e'un file xls  non va. 

    Qualcuno riesce ad aiutarmi

    Grazie

    giovedì 17 marzo 2016 08:09
  • Probabilmente le impostazioni di connessione per un XLS e quelle per un XLSX sono diverse, semplicemente perché i formati dei file sono completamente diversi. Il consiglio è quello di trattare solo XLSX se ti è possibile, obbligando chi li produce ad usare il nuovo formato, se non ti è possibile devi supportare i diversi tipi di connessione.

    Se invece ti è possibile lavorare con XLSX, ti consiglierei di provare ad utilizzare la libreria EpPlus, open source, che ti permette di leggere e manipolare tutto il contenuto di un foglio di excel invece della connessione in stile database che è possibile ma ha tutta una serie di problemi fisiologici che sono determinati da come il file viene salvato, dai contenuti dei campi e così via.


    Sabrina C. - http://www.dotnetwork.it

    venerdì 18 marzo 2016 17:48
  • Personalmente uso stringhe di connessione diverse usando la funzione "switch (Path.GetExtension(nome_file))"

                        case ".xls":
                            using (OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Mode=Read;" +
                                    "Data Source=" + nome_file+ ";" +
                                    "Extended Properties='Excel 8.0;HDR=No'"))
                            {
                                //your code here
                            }
                            break;

                        case ".xlsm":
                            using (OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Mode=Read;" +
                                    "Data Source=" + sFile + ";" +
                                    "Extended Properties='Excel 12.0 Macro;HDR=No'"))

                                 {

                                      //your code here

                                  }

    martedì 12 novembre 2019 13:46