2017-07-02 2 views
0

J'ai un code héritage C++ en utilisant adodb de lire le fichier Excel dans Windows 32 bits, il est le fichier en cours d'exécution et il est quelque chose comme:C++ en utilisant adodb pour lire le fichier Excel dans Windows 7 64 bits?

#import "C:/Program Files/Common Files/System/ado/msado15.dll" rename("EOF", "adoEOF") rename("BOF", "adoBOF") 

string conn_str; 
if(*(file_name.back()) == 'x') 
    conn_str = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + file_name + ";Extended Properties=\"Excel 12.0 Xml;HDR=Yes;IMEX=1\""; 
else 
    conn_str = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=" + file_name + ";Extended Properties=\"Excel 8.0;HDR=Yes\""; 

::CoInitialize(NULL); 

pRec->Open("SELECT * FROM [" + SheetName + "]", conn_str, adOpenStatic, adLockOptimistic, adCmdText)); 

maintenant passer au nouvel environnement de déploiement (Windows 64 bits + 64 bits excellent), le code ne peut pas s'exécuter, le message d'erreur est "le fournisseur n'a pas pu être trouvé".

Essayer de résoudre le problème, mais après une recherche sur Internet, je suis un peu confus.

Microsoft FAQ About Windows DAC/MDAC etc semblent dire, "Microsoft Data Access Components (MDAC)" inclut ADO, OLE DB et ODBC; mais MDAC est obsolète, et maintenant le paquet est appelé "Windows Data Access Components (Windows DAC)" qui est automatiquement installé dans Windows 7.

- Donc je n'ai pas besoin d'installer MDAC sur Windows 7 64 bits , et le téléchargement sur Microsoft Data Access Components (MDAC) 2.8 SP1 est un 32 bits?

Mais comment pourrais-je utiliser le code existant appeler msado15.dll lire Excel?

Dois-je installer le MDAC 32 bits SysWOW64 dossier et continuer à l'utiliser? Mais ce msado de 32 bits peut-il ouvrir un fichier Excel créé par Excel 64 bits?

Ou vais-je utiliser une autre dll de « Windows DAC » à utiliser de bruit sur un ordinateur Windows 64 bits?

Ou, je dois renoncer à tarder et trouver un moyen d'autre pour lire les fichiers Excel en C++?

Répondre

0

dans le cas où quelqu'un cogné ici, d'accès de données Excel en C++ code sur une machine Windows x64 avec le bureau 64 bits installé, vous avez besoin

  • Télécharger Microsoft Access Database Engine 2016 Redistributable et installer
  • importation msadoXX. dll en C++ Code
  • en utilisant la chaîne de connexion appropriée, sur la page ci-dessus en expansion « les instructions d'installation » il y a des détails tels que la propriété ConnectionString à « Microsoft.ACE.OLEDB.12.0 », pour classeur Excel 97-2003 (.xls) utiliser "Excel 8.0", pour Excel Workbook (.xlsx) utilise "Excel 12.0 Xml" etc. Remarque: "Microsoft. JET.OLEDB "ne fonctionne pas.