2011-11-22 45 views
5

Tôi đang viết một ứng dụng sử dụng một số OleDbAdapter để truy cập thông tin trong tệp Excel. Khi tôi cố gắng tạo kết nối với tệp Excel nếu người dùng có tệp Excel khác (không liên quan) mở trên màn hình của họ thì tệp đang được bộ điều hợp kết nối mở trong cửa sổ này ở định dạng Chỉ đọc. Nếu người dùng không có một thể hiện của Excel mở thì các tệp sẽ bị ẩn.OleDbConnection() mở tệp Excel trong bất kỳ cửa sổ Excel đang mở nào. Nhưng không nếu không có cửa sổ mở

Đây là mã của tôi:

foreach (item app in apps) 

{ 

    DataTable dt = new DataTable(); 

    string CnStr = ("Provider=Microsoft.Jet.OLEDB.4.0;" + ("Data Source=" 
        + ((app.FilePath) + (";" + "Extended Properties=\"Excel 8.0;\"")))); 

    string OleDbString = ("Select * from [" + app.SheetName + "$]");        

    OleDbDataAdapter Adapter = new OleDbDataAdapter(); 

    var conn = new OleDbConnection(CnStr); 
    conn.Open(); <----------------------------This is where the files are being opened. 

    var cmd = new OleDbCommand(OleDbString, conn); 

    Adapter.SelectCommand = cmd; 


    Adapter.Fill(app.DataTable); 

    conn.Close(); 

    Adapter.Dispose(); 

} 

Không ai biết lý do tại sao OleDbConnection() sẽ mở một tập tin nếu một thể hiện của Excel đã được mở nhưng sẽ không nếu một lần không?

+0

may mắn với điều này? Tôi gặp vấn đề chính xác như nhau. – jpints14

Trả lời

-1

Bạn nên đăng mã để khởi tạo ứng dụng biến của mình. Có lẽ câu trả lời cho câu hỏi của bạn nằm ở đó. Ứng dụng có sử dụng phương thức GetObject hoặc CreateObject không?

Các vấn đề liên quan