2008-10-22 36 views
5

Tôi đang tạo chức năng "nhập từ Excel". Nó phải nằm trong một DLL, được gọi từ một ứng dụng không phải MFC. Phải cung cấp hình ảnh của bảng tính mà người dùng có thể kéo một hộp chọn xung quanh (để chọn ô), sau đó nhấp vào nút NHẬP và thực hiện điều đúng. Gặp sự cố khi tải bảng tính lên, có một nút liền kề với nó và có nó xảy ra trong một DLL.Cần điều khiển ActiveX để nhúng Excel vào hộp thoại

Tôi đã đi đường của một hộp thoại MFC bên trong một DLL, nhưng đã bị chặn trong cố gắng để đưa lên một khách hàng OLE cho excel trên một cửa sổ trên hộp thoại. Chỉ hỗ trợ tôi tìm thấy để hiển thị Excel bằng OLE yêu cầu một SDI. Tôi có thể nhận được các chức năng tự động hóa để hoạt động và tôi có thể đọc các ô và vẽ "hình ảnh giả mạo" trên hộp thoại của mình ... nhưng tôi e rằng điều đó sẽ không tuân thủ các yêu cầu của tôi.

Vì vậy, tôi đã thử tạo một SDI. Tôi đã có thể tạo ra một SDI mà đưa lên Excel như là một khách hàng OLE. Tôi đã có thể xử lý sự kiện "thay đổi lựa chọn" và chuyển dữ liệu di động mà tôi cần. Tôi đã bị hư hỏng vào thời điểm này bởi 2 mục:

  1. Không thể làm cho SDI này hoạt động trong MFC DLL. Crash trong CWinApp constructor, khẳng định rằng AfxGetThread không phải là null. Đã chuyển "theApp" thành cục bộ trong phạm vi hàm DLL được xuất duy nhất, nhưng vẫn không thể làm việc đó, nhưng với các triệu chứng khác nhau: bị lỗi khi thêm AFX_MANAGE_STATE (AfxGetStaticModuleState()); để xuất khẩu chức năng DLL, nếu tôi không sử dụng, OnInitInstance không bao giờ được nhập vào. Đã cố thêm một cuộc gọi vào hàm Run() của ứng dụng, nhưng điều đó không giúp ích gì. Tôi có thể đăng mã này nếu ai đó nghĩ rằng họ có ý tưởng về vấn đề là gì.

  2. Không thể hiển thị thanh công cụ trong khi mục ứng dụng khách Excel đang hoạt động. Tôi có thể đặt "nhập khẩu" của tôi (và các tùy chọn khác) trên thanh thực đơn ở trên cùng, nhưng điều đó không đủ rõ ràng. Ngay cả một thanh công cụ nổi đã được đóng lại. Nó có ý nghĩa rằng nó sẽ làm điều này, vì nó sẽ gây nhầm lẫn để có một thanh công cụ hiện tại mà không thể thực hiện hành động trên mục hiện đang hoạt động ... nhưng trong trường hợp của tôi, đó là một vấn đề.

Vì vậy, bây giờ tôi nghĩ tôi cần quay lại cách tiếp cận hộp thoại và nhúng điều khiển ActiveX để hiển thị tệp bảng tính excel cần nhập.

Phải cho phép tôi xử lý sự kiện thay đổi lựa chọn hoặc phải cho phép tôi tìm thấy ô nào được chọn (hoặc được chọn gần đây nhất nếu nhấp vào nút "nhập" trên hộp thoại của tôi khiến các ô được chọn không được chọn).

Nó cũng phải đi kèm với các điều khoản cấp phép hợp lý, vì điều này sẽ được sử dụng trong một ứng dụng thương mại rộng rãi cho công chúng.

Nếu có ai biết về "sửa lỗi nhanh" cho một trong các cách tiếp cận mà tôi đã thử, điều đó cũng hữu ích.

Hy vọng ai đó có thể giúp tôi!

Trả lời

0

Nếu bạn chỉ muốn nhúng Excel, bạn không cần bất kỳ thứ gì.

Chỉ cần nhúng nó vào điều khiển máy chủ OCX chuẩn.

+0

Hi Fred. Tôi không quen với điều khiển này. Google bật lên một loạt các tham chiếu ứng dụng của bên thứ 3 và trong VS, nhấp chuột phải vào hộp thoại của tôi, sau đó chọn "Chèn hoạt động X kiểm soát ..." không có bất kỳ điều gì giống như kiểm soát Máy chủ OCX trong đó. Bạn có thể chỉ cho mình hướng chính xác được không? Cám ơn rất nhiều!! – Steve

+0

Rất tiếc !! Lời xin lỗi của tôi! Xin lỗi, Mikea! Tôi không biết tôi lấy cái tên "Fred" từ đâu. Quá nhiều nhiệm vụ đa nhiệm. – Steve

+0

Tôi đã tìm thấy điều khiển Microsoft DSOFramer, mẫu OCX mà họ cung cấp giao diện với các ứng dụng Office. Tôi không chắc đó có phải là những gì bạn gợi ý hay không, nhưng điều này đã cho tôi nơi tôi cần. Cảm ơn một lần nữa! – Steve

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