需要ActiveX控件将Excelembedded到对话框中

我正在构build一个“从Excel导入”function。 它必须位于从非MFC应用程序调用的DLL中。 必须提供电子表格的图像,用户可以拖动select框(select单元格),然后单击一个导入button,并发生正确的事情。 无法获得电子表格,有一个button相邻,并发生在一个DLL中。

我去了一个DLL对话框中的MFC对话框的路线,但被阻止在对话框上的窗口上调出一个OLE客户端的Excel。 只有支持我发现使用OLE显示Excel需要一个SDI。 我能够获得自动化function的工作,我可以读取单元格,并在我的对话框中画出它们的“假图像”…但是恐怕这将不符合我的要求。

所以我试图创build一个SDI。 我能够创build一个SDI,将Excel作为一个OLE客户端。 我能够处理“select改变”事件,并去我需要的单元格数据。 我被这件事挫败了2件物品:

  1. 无法使这个SDI在MFC DLL中工作。 在CWinApp构造函数中崩溃,断言AfxGetThread不是null。 将“theApp”移到了单个导出的DLL函数的本地范围内,但仍然无法使其工作,但是具有不同的症状:添加AFX_MANAGE_STATE(AfxGetStaticModuleState())时崩溃了。 导出DLL函数,如果我没有使用,OnInitInstance永远不会被input。 尝试添加一个调用应用程序的Run()函数,但没有帮助。 如果有人认为他们有一个想法是什么问题,我可以张贴这个代码。

  2. Excel客户端项目处于活动状态时,无法显示工具栏。 我可以把我的“导入”(和其他选项)放在顶部的菜单栏上,但是这不够明显。 即使是一个浮动工具栏被closures。 这样做是有道理的,因为如果有一个工具栏不能在当前活动的项目上执行操作会令人困惑…但在我的情况下,这是一个问题。

所以现在我想我需要回到对话的方法,并embedded一个ActiveX控件,导致Excel电子表格文件导入。

必须允许我处理select更改事件,或者必须允许我查找select了哪些单元格(或者如果单击对话框上的“导入”button导致选定的单元格变为未选中状态,则最近select了这些单元格)。

它还必须提供合理的许可条款,因为这将用于广泛提供给公众的商业应用程序。

如果有人知道对我尝试过的两种方法中的一种,“快速修复”,那也是有用的。

希望可以有人帮帮我!

如果你只是想嵌入Excel,你不需要任何东西。

只需将其嵌入到标准的OCX主机控制中。