【问题标题】:Need ActiveX control to embed Excel into a dialog需要 ActiveX 控件才能将 Excel 嵌入对话框
【发布时间】:2010-09-18 10:50:32
【问题描述】:

我正在构建一个“从 Excel 导入”功能。它必须在一个 DLL 中,从非 MFC 应用程序调用。必须提供电子表格的图像,用户可以在其中拖动选择框(以选择单元格),然后单击导入按钮,并让正确的事情发生。无法启动电子表格,旁边有一个按钮,并且在 DLL 中发生。

我在 DLL 中使用了 MFC 对话框,但在尝试在对话框的窗口上打开 OLE 客户端以用于 excel 时被阻止。我发现只有使用 OLE 显示 Excel 的支持需要 SDI。我能够让自动化功能工作,我可以读取单元格并在我的对话框中绘制它们的“假图像”......但我担心这将不符合我的要求。

所以我尝试创建一个 SDI。我能够创建一个将 Excel 用作 OLE 客户端的 SDI。我能够处理“选择更改”事件,并获取我需要的单元格数据。在这一点上,我被 2 项挫败:

  1. 无法使此 SDI 在 MFC DLL 中工作。 CWinApp 构造函数中的崩溃,断言 AfxGetThread 不为空。将“theApp”移动到单个导出的 DLL 函数中的本地范围内,但仍然无法使其工作,但出现不同的症状:添加时崩溃 AFX_MANAGE_STATE(AfxGetStaticModuleState());要导出的 DLL 函数,如果我不使用它,则永远不会输入 OnInitInstance。尝试添加对应用程序的 Run() 函数的调用,但这没有帮助。如果有人认为他们知道问题所在,我可以发布此代码。

  2. 当 Excel 客户端项处于活动状态时,无法显示工具栏。我可以将我的“导入”(和其他选项)放在顶部的菜单栏上,但这还不够明显。甚至一个浮动工具栏也被关闭了。这样做是有道理的,因为如果存在无法对当前活动项目执行操作的工具栏会令人困惑……但就我而言,这是个问题。

所以现在我想我需要回到对话框方法,并嵌入一个 ActiveX 控件,该控件会显示一个要导入的 Excel 电子表格文件。

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

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

如果有人知道我尝试过的任何一种方法的“快速修复”,那也很有用。

希望有人可以帮助我!

【问题讨论】:

    标签: windows excel mfc activex ole


    【解决方案1】:

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

    只需将其嵌入标准 OCX 主机控件即可。

    【讨论】:

    • 嗨,弗雷德。我对这个控件不熟悉。谷歌出现了一堆 3rd 方应用程序引用,在 VS 中,右键单击我的对话框然后选择“插入 Active X 控件...”并没有任何听起来像 OCX 主机控件的东西。你能为我指出正确的方向吗?非常感谢!!
    • 哎呀!我很抱歉!对不起,米凯!我不知道我从哪里得到“弗雷德”这个名字。过多的多任务处理。
    • 我找到了 Microsoft DSOFramer 控件,这是他们提供的与 Office 应用程序接口的 OCX 示例。我不确定这是否是你的建议,但这让我到达了我需要的地方。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    相关资源
    最近更新 更多