Sé que tengo este problema una y otra vez cuando implemento mi aplicación en un nuevo servidor porque estoy usando este controlador para conectarme a un archivo de Excel. Así que aquí está lo que estoy haciendo últimamente.
Hay un Windows Server 2008 R2, instalo los controladores de Access para una máquina de x64 bits y me deshago de este mensaje, lo que me hace muy feliz de encontrarme con otro.
Este aquí abajo funciona espléndidamente en mi máquina de desarrollo, pero en el servidor me da un error incluso después de instalar los últimos controladores ODBC, lo que creo que este es el problema, pero así es como lo resolví.
private const string OledbProviderString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\OlsonWindows.xls;Extended Properties=\"Excel 8.0;HDR=YES\"";
Reemplazo con el nuevo proveedor como este a continuación:
private const string OledbProviderString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\OlsonWindows.xlsx;Extended Properties='Excel 12.0;HDR=YES;';";
Pero mientras hago esto, hay una cosa que debes notar. El uso de la extensión de archivo .xlsx y la versión de Excel es 12.0.
Después de entrar en este mensaje de error Error: "No se pudo encontrar el ISAM instalable" , decido cambiar las cosas un poco como a continuación:
private const string OledbProviderString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\OlsonWindows.xls;Extended Properties='Excel 8.0;HDR=YES;';";
y sí, he terminado con esa cosa desagradable, pero aquí recibí otro mensaje. El motor de la base de datos de Microsoft Access no puede abrir o escribir en el archivo 'time_zone'. Ya está abierto exclusivamente por otro usuario, o necesita permiso para ver y escribir sus datos.lo que me dice que no estoy lejos de resolverlo.
Tal vez hay otro proceso que abrió el archivo mientras tanto y todo lo que tengo que hacer es reiniciar y todo comenzará a funcionar sin problemas como se esperaba.