2010-09-08 49 views
6

Tôi đọc nội dung của một tờ excel trong ứng dụng của tôi sử dụng:Reading từ Excel: Lỗi Microsoft.Jet.OLEDB.4.0 trên hệ thống 64 bit

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(); 

này thất bại trong hệ thống 64 bit với các lỗi :

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

Cách làm việc này trong máy 64 bit?

Trả lời

5

Microsoft.Jet.OLEDB không có phiên bản 64 bit, chỉ 32 bit. Biên dịch ứng dụng của bạn thành 32bit (Nền tảng đích: x86 trong tùy chọn xây dựng).

+0

Có hoặc bạn có thể sử dụng corflags.exe để chuyển cụm để chạy ở chế độ 32 bit. –

1

Tôi không tin rằng nó hoạt động ... xem câu hỏi có liên quan này: OleDB not supported in 64bit mode?

Vấn đề dường như là COM/Interop không được thiết kế cho các môi trường 64 bit, và vì vậy nó không thể được đăng ký ở chế độ 64 bit.

Bạn có thể buộc ứng dụng .NET chạy ở chế độ 32 bit trên máy 64 bit, cho phép bạn truy cập chức năng OleDB.

10

Microsoft phát hành phân phối trình điều khiển với trình điều khiển 64 bit hoạt động cho Access và Excel. Bạn có thể tải xuống cả phiên bản 64 bit và 32 bit từ trang web MS downloads. Trang tải xuống cũng có một phác thảo ngắn gọn về những gì bạn cần thay đổi trong chuỗi kết nối của mình để tham khảo trình điều khiển ACE.

Tóm lại, bạn cài đặt phân phối của tài xế 64-bit và sau đó thay đổi chuỗi kết nối của bạn để một cái gì đó dọc theo dòng:

string connStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=""Excel 8.0;IMEX=1"""; 
Các vấn đề liên quan