qt集成dsoframer.ocx打开office办公软件

最近一段时间真是事情太多了,前不久项目中一个嵌入office软件的问题,由于没有时间研究,且项目的需求是浏览word文档,偷了一个懒,把word文档转换成pdf文档,然后嵌入libcef浏览器给打开了

现在回过头来,重新研究了这方面的直接办法,在网上查了多方面的资料,终于决定要使用ocx这个方案来完成此项功能,可限于资源问题,ocx方面的资料 没怎么接触过,所以就盲目的在晚上看别人的东西,不过皇天不负有心人,最终还是让我成功的搞定了这个问题,然后觉着,这个ocx也不过如此么,总的来说说 还是比较简单

我当前机器环境:windwos7 64位  dsoframer 1.3 qt5.5.1 vs2013

下边我说下我自己的步骤:

1、下载dsoframer.ocx,然后使用命令注册regsvr32.exe dsoframer.ocx

2、运行regedit.exe 在HKEY_LOCAL_MACHINE目录下搜索dsoframer,获取CLSID的值,这个是用作ocx的唯一标示,如果没有搜索到,可以下载其他的dsoframer,重新注册,或者给我留言

3、接下来直接上代码

 1 QAxWidget * _Word = new QAxWidget(this);
 2
 3 _Word->setControl("{00460182-9E5E-11d5-B7C8-B8269041DD57}");
 4
 5 _Word->setProperty("Visible", true);
 6
 7 QString filePath = QFileDialog::getOpenFileName(0, "Open doc file", QString(), "*.doc");
 8
 9 if (filePath.isEmpty())
10
11 return;
12
13 _Word->dynamicCall("Open(string)", filePath);
14
15 _Word->dynamicCall("SetCaption(string)", "ocx test");
16
17 _Word->dynamicCall("SetMenuAccelerators(bool)", false);
18
19 _Word->dynamicCall("SetMenubar(bool)", false);
20
21 QGridLayout * ply = new QGridLayout(this);
22
23 ply->addWidget(_Word, 0, 0, 1, 1);
24
25 ply->setContentsMargins(0, 0, 0, 0);
26
27 ui.widget->setLayout(ply);

效果图如下:

dsoframer.ocx打开office软件

dsoframer的相关接口,不过常用的也就那么几个

BeforeDocumentClosed(IDispatch*,bool&) Document,Cancel

BeforeDocumentSaved(IDispatch*,QString,bool&) Document,Location,Cancel

OnActivationChange(bool) fGoingActive

OnDocumentClosed()

OnDocumentOpened(QString,IDispatch*) File,Document

OnFileCommand(dsoFileCommandType,bool&) Item,Cancel

OnPrintPreviewExit()

OnSaveCompleted(IDispatch*,QString,QString) Document,DocName,FullFileLocation

exception(int,QString,QString,QString) code,source,disc,help

propertyChanged(QString) name

signal(QString,int,void*) name,argc,argv

Activate()

Close()

CreateNew(QString) ProgIdOrTemplate

EnableFileCommand(dsoFileCommandType) Item bool

ExecOleCommand(int) OLECMDID

ExecOleCommand(int,QVariant) OLECMDID,Options

ExecOleCommand(int,QVariant,QVariant&) OLECMDID,Options,vInParam

ExecOleCommand(int,QVariant,QVariant&,QVariant&)  OLECMDID,Options,vInParam,vInOutParam

GetDataObjectContent(QVariant) ClipFormatNameOrNumber QVariant

Open(QVariant) Document

Open(QVariant,QVariant) Document,ReadOnly

Open(QVariant,QVariant,QVariant)    Document,ReadOnly,ProgId

Open(QVariant,QVariant,QVariant,QVariant)Document,ReadOnly,ProgId,WebUsername

Open(QVariant,QVariant,QVariant,QVariant,QVariant) Document,ReadOnly,ProgId,WebUsername,WebPassword

PrintOut()

PrintOut(QVariant) PromptUser

PrintOut(QVariant,QVariant) PromptUser,PrinterName

PrintOut(QVariant,QVariant,QVariant) PromptUser,PrinterName,Copies

PrintOut(QVariant,QVariant,QVariant,QVariant)

PromptUser,PrinterName,Copies,FromPage

PrintOut(QVariant,QVariant,QVariant,QVariant,QVariant) PromptUser,PrinterName,Copies,FromPage,ToPage

PrintOut(QVariant,QVariant,QVariant,QVariant,QVariant,QVariant)  PromptUser,PrinterName,Copies,FromPage,ToPage,OutputFile

PrintPreview()

PrintPreviewExit()

Save()

Save(QVariant) SaveAsDocument

Save(QVariant,QVariant) SaveAsDocument,OverwriteExisting

Save(QVariant,QVariant,QVariant)

SaveAsDocument,OverwriteExisting,WebUsername

Save(QVariant,QVariant,QVariant,QVariant) SaveAsDocument,OverwriteExisting,WebUsername,WebPassword

SetActivationPolicy(dsoActivationPolicy) ActivationPolicy

SetBackColor(QColor) BackColor

SetBorderColor(QColor) BorderColor

SetBorderStyle(dsoBorderStyle) BorderStyle

SetCaption(QString) Caption

SetDataObjectContent(QVariant,QVariant) ClipFormatNameOrNumber,DataByteArray

SetEnableFileCommand(dsoFileCommandType,bool) Item,rhs

SetEventsEnabled(bool) EventsEnabled

SetForeColor(QColor) ForeColor

SetFrameHookPolicy(dsoFrameHookPolicy) FrameHookPolicy

SetHostName(QString)HostName

SetLockServer(bool) LockServer

SetMenuAccelerators(bool) MenuAccelerators

SetMenubar(bool) Menubar SetModalState(bool) ModalState

SetTitlebar(bool) Titlebar

SetTitlebarColor(QColor) TitlebarColor

SetTitlebarTextColor(QColor) TitlebarTextColor

SetToolbars(bool) Toolbars

ShowDialog(dsoShowDialogType) DlgType

_PrintOutOld()

_PrintOutOld(QVariant) PromptToSelectPrinter

如果想看哪种方法调用失败或者是异常,请参考C++ gui程序附加dos输出窗口

注:需要完整事例的可以给我留言

时间: 2024-12-22 18:18:55

qt集成dsoframer.ocx打开office办公软件的相关文章

Linux常用Office办公软件

1.WPS Office是由金山软件股份有限公司自主研发的一款办公软件套件,可以实现办公最常用的文字.表格.演示等多种功能.免费提供海量的在线存储空间及文档模板.支持阅读和输出PDF文件.全面兼容Microsoft Office 97-2010格式. 2.永中Office是一款功能强大的办公软件,已经集成了文字处理.电子表格和简报制作三大应用.永中Office对微软Office文档实现双向精确兼容,其精确专业的排版.强大的数据透视表和丰富的插件机制,完全可以满足专业级用户的需求,个人感觉没有WP

Office办公软件各版本下载(一键安装)

史上最快最全的Office套件,含Word.PPT.Excel.Access.Outlook完整组件(微软官方版本). 推荐安装Office2010版本!一键完成清理.安装Office.自动激活. 图文教程:http://saff.xyz/WenKu/Data/2016120912343947.html Office 2003版: 下载地址: https://pan.baidu.com/s/1jHG3cNW Office2003版密钥:安装包自带 Office 2007版: 下载地址: http

qt: 系统默认程序打开文件或者软件;

Qt提供了QDesktopServices类, 可以利用openUrl函数调用默认程序打开文件: 源码参考: #ifdef Q_OS_WIN32 m_szHelpDoc = QString("file:///") + m_szHelpDoc; bool is_open = QDesktopServices::openUrl(QUrl(m_szHelpDoc, QUrl::TolerantMode)); if(!is_open) { LogWriter::getLogCenter()-&

自己的系统重装之后,怎么去重新的装官方的office办公软件,详细教程

1  访问官网地址--微软,并通过自己的微软账号进行登录,转到下面的界面 2   点击上图的菜单栏的offce菜单项,跳转到下图 3  点击  菜单栏的产品  之后选择  查看office的全部的历史产品 4   跳转到的页面,下滑滚轮到最后即下面的页面 5  在此选择office2016版,点击跳转 并在跳转的页面,下滑到接近最后面  选择MyAccount,进行跳转 在下面的界面中进行Office2016的下载,且可以查看自己账号之前已经有的微软账号的时候,激活的office的激活码 下载完

微软Office办公软件国际认证MOS2010

2015年4月11日,连续通过微软Office2010的四科(Word Excel PowerPoint Access)最难级别的考试.四科成绩依次是918,975,936,910.满分均一千.及格七百 成绩均九百以上,获得"微软Office2010大师"称号. 部分照片如下

Office办公软件各版本下载(一键安装,永久激活)

点击下载 原文地址:https://www.cnblogs.com/viplued/p/9246059.html

iOS系统办公软件ppt等如何转换windows下可以打开的格式

一.文件后缀 通常在PPT,EXE等办公软件文件后面直接将后缀改成对应形式,自动转换(通常不一定好使) eg:.ppt   或   .pptx 二.从系统中转换 1.将要转换格式的文件打开到当前窗口 三.从下载的软件iwork转换 iwork不光可以转换多种格式的文件,还可以做出高大上的ppt,里面有好看的模板,还有图片之类的 使用iWork打开幻灯片,另存为 PowerPoint格式(即后辍名为PPT或者PPTX格式)即可. iWork 可以另存Microsoft office格式的文件,以保

基于Visual C++2010与office2010开发办公自动应用(1)在自己的程序里面打开office文档

分享一下我老师大神的人工智能教程吧.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net Office 2010,是微软推出新一代办公软件,开发代号为Office 14,实际是第12个发行版.该软件共有6个版本,分别是初级版.家庭及学生版.家庭及商业版.标准版.专业版和专业高级版,此外还推出Office 2010免费版本,其中仅包括Word和Excel应用.除了完整版以外,微软还将发布针对Office 2007的升级版O

Fedora25办公软件libreoffice汉化

表格.幻灯片.文字编辑功能是办公最基本的几个功能,如果没有这几个功能,任何系统都不能成为优秀的桌面系统,至少不能成为完整的系统. libreoffice作为linux平台上MSoffice的替代品,在开源界有很高的知名度.任何人都可以免费获得.免费使用.甚至修改其源代码等等. 自由免费的办公套件 LibreOffice是一款功能强大的办公软件,默认使用 OpenDocument Format (开放文档格式), 并支持其他多种文档格式,比如*.docx, *.xlsx, *.pptx等.它是跨平