Je sais que j'ai ce problème encore et encore lorsque je déploie mon application sur un nouveau serveur car j'utilise ce pilote pour me connecter à un fichier Excel. Alors voici ce que je fais ces derniers temps.
Il y a un Windows Server 2008 R2, j'installe les pilotes Access pour une machine x64 bits et je me débarrasse de ce message, ce qui me rend très heureux de tomber sur un autre.
Celui-ci ci-dessous fonctionne à merveille sur ma machine de développement, mais sur le serveur me donne une erreur même après l'installation des derniers pilotes ODBC, ce qui, je pense, est le problème, mais c'est ainsi que je l'ai résolu.
private const string OledbProviderString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\OlsonWindows.xls;Extended Properties=\"Excel 8.0;HDR=YES\"";
Je remplace par le nouveau fournisseur comme celui-ci ci-dessous:
private const string OledbProviderString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\OlsonWindows.xlsx;Extended Properties='Excel 12.0;HDR=YES;';";
Mais en faisant cela, il y a une chose que vous devriez remarquer. L'utilisation de l'extension de fichier .xlsx et de la version Excel est 12.0.
Après avoir reçu ce message d' erreur Erreur: "Impossible de trouver l'ISAM installable" , je décide de modifier un peu les choses comme ci-dessous:
private const string OledbProviderString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\OlsonWindows.xls;Extended Properties='Excel 8.0;HDR=YES;';";
et oui, j'en ai fini avec cette chose désagréable, mais ici j'ai un autre message Le moteur de base de données Microsoft Access ne peut pas ouvrir ou écrire dans le fichier 'time_zone'. Il est déjà ouvert exclusivement par un autre utilisateur, ou vous avez besoin d'une autorisation pour afficher et écrire ses données. ce qui me dit que je ne suis pas loin de le résoudre.
Peut-être qu'il y a un autre processus qui a ouvert le fichier entre-temps et tout ce que j'ai à faire est un redémarrage et tout commencera en douceur comme prévu.