2010-09-08 16 views
6

Kullanmakta olduğum uygulamadaki bir excel sayfasının içeriğini okuyorum:Excel'den okuma: 64 bit sistemlerde Microsoft.Jet.OLEDB.4.0 hatası

 OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties=Excel 8.0"); 
_myDataSet = new DataSet(); 
OleDbDataAdapter myCommand = new OleDbDataAdapter(" SELECT * FROM [" + "My Sheet" + "$]", con); 

myCommand.Fill(_myDataSet); 
con.Close(); 

64 bit sistemlerde hatayla karşılaşıyor:

Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine

Bu işlem 64 bit makinede nasıl çalışır?

cevap

5

Microsoft.Jet.OLEDB 64bit sürümüne sahip, sadece 32bit değil. Uygulamanızı 32bit olarak derleyin (Platform hedefi: x86'da derleme seçeneğiyle).

+0

Evet veya derlemeyi 32bit modunda çalışmaya geçmek için corflags.exe'yi kullanabilirsiniz. –

1

Bu ilgili soruya bakın ... çalıştığını düşünüyoruz: OleDB not supported in 64bit mode?

sorun görünüyor için olması/Interop'un 64 bit ortamlar için tasarlanmış değildir ve bu nedenle tescil edilemez COM 64 bit modunda.

.NET uygulamanızı, 64 bit makinede 32 bit modunda çalışacak şekilde zorlayabilirsiniz; bu, OleDB işlevine erişmenizi sağlar.

10

Microsoft Access ve Excel için çalışan bir 64-bit sürücü ile bir sürücü dağıtım yayımladı. MS 642 ve 32 bit sürümlerini MS downloads sitesinden indirebilirsiniz. İndirme sayfasının ayrıca, ACE sürücüsüne başvurmak için bağlantı dizenizde değiştirmeniz gerekenleri özetleyen bir kısa anahat vardır. Özetle

, 64 bit sürücü dağıtım yükleyin ve çizgisinde bir şey için bağlantı dizesini değiştirin:

string connStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=""Excel 8.0;IMEX=1""";