VC如何操作Openoffice进行读写操作?

wangfou 2010-01-11 09:47:33
目的:利用VC调用Openoffice的接口对其进行读写操作
问题:我不知道该怎么做,嘿嘿,有没有接触过这个东西的啊? 简单的介绍下流程呗。。。谢谢啦


备注:我从Openoffice网站上下载了一个SDK,看到了里面有一些c++的API函数,但是一头雾水,不知从何入手。大侠们棒棒忙了
...全文
463 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fuwulin 2012-07-19
  • 打赏
  • 举报
回复
如何在 vs2008 里边通过接口把 openoffice 调起来?
algdel 2012-07-18
  • 打赏
  • 举报
回复
厉害的回复啊,恳切啊!有没有谁实现对OpenOffice中的calc插入图片的接口啊
北斗苍穹 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wangfou 的回复:]
引用 4 楼 loseway 的回复:
我们操纵Word需要通过类型库中的MFC类。而这些类,应该都是基于一个叫COleDispatchDriver的类。至少我所了解到的都是这样。

COleDispatchDriver没有基类。COleDispatchDriver类实现OLE自动化中的客户方。OLE调度接口为访问一个对象的方法和属性提供了途径。COleDispatchDriver的成员函数……
[/Quote]敬爱的楼主同志,如果你觉得这个对你没有用的话,你可以选择不采用。大可不必利用这样的方式表达出来。如果你觉得所有的回帖都对你没有用的话,你大可不必一个字一个字的去写这个问题,并且发出来。请您尊重一下别人的辛勤,可以吗?如果你觉得所有的问题您都能搞定的话,但请您以后可以不用发帖提问了!
wangfou 2010-01-13
  • 打赏
  • 举报
回复
一个有用的答案都没有



自己已经搞定了一个了
loseway 2010-01-11
  • 打赏
  • 举报
回复
我们操纵Word需要通过类型库中的MFC类。而这些类,应该都是基于一个叫COleDispatchDriver的类。至少我所了解到的都是这样。

COleDispatchDriver没有基类。COleDispatchDriver类实现OLE自动化中的客户方。OLE调度接口为访问一个对象的方法和属性提供了途径。COleDispatchDriver的成员函数连接,分离,创建和释放一个IDispatch类型的调度连接。其它的成员函数使用变量参数列表来简化调用IDispatch::Invoke。

学习如何自动化控制 Word、Excel 和 Powerpoint 的对象模型的最佳方法是使用这些 Office 应用程序中的宏录制器:

从工具菜单上的宏选项中选择录制新宏,然后执行您感兴趣的任务。
从工具菜单上的宏选项中选择停止录制。
完成录制后,从工具菜单上的宏选项中选择宏,选择您录制的宏,然后单击编辑。
您将看到生成的 VBA 代码,该代码可完成您所录制的任务。记住,录制的宏在大多数情况下并不是最佳代码,但它可以提供快捷可用的示例。

Application:代表 Microsoft Word 应用程序。Application 对象包含可返回最高级对象的属性和方法。例如,ActiveDocument 属性可返回当前活动的Document 对象。

Documents:由 Word 当前打开的所有 Document(文档) 对象所组成的集合。

Document:代表一篇文档。Document 对象是 Documents 集合中的一个元素。Documents 集合包含 Word 当前打开的所有 Document 对象。

Selection:该对象代表窗口或窗格中的当前所选内容。所选内容代表文档中被选定(或突出显示的)的区域,若文档中没有所选内容,则代表插入点。每个文档窗格只能有一个活动的 Selection 对象,并且整个应用程序中只能有一个活动的 Selection 对象。

例子1:


#include "msword9.h" //为了使代码集中,方便阅读,所以把头文件放到了这里
void CStep1Dlg::OnOK()
{
_Application app; //定义一个WORD的应用对象
if(!app.CreateDispatch(_T("Word.Application"))) //启动WORD
{
AfxMessageBox(_T("居然你连OFFICE都没有安装吗?"));
return;
}

AfxMessageBox(_T("WORD 已经运行启动啦,你可以用Ctrl+Alt+Del查看"));
app.SetVisible(TRUE); //设置WORD可见。
//当然,如果你想要悄悄地调用WORD的功能,则注释掉这条语句
AfxMessageBox(_T("现在你已经看到WORD的程序界面了吧"));

AfxMessageBox(_T("WORD准备要退出啦"));
VARIANT SaveChanges,OriginalFormat,RouteDocument; //定义调用QUIT时使用的参数
SaveChanges.vt=VT_BOOL; //设置退出WORD时候的保存参数
SaveChanges.boolVal=VARIANT_FALSE; //为不保存任何文档,模板及设置

::VariantInit(&OriginalFormat); //清空变量
RouteDocument.vt=VT_EMPTY; //清空变量的另一种方法

//调用Quit退出WORD应用程序。当然不调用也可以,那样的话WORD还在运行着那
app.Quit(&SaveChanges,&OriginalFormat,&RouteDocument);

app.ReleaseDispatch(); //释放对象指针。切记,必须调用

AfxMessageBox(_T("Step1执行完成。接着请学习Setp2"));
}


……
http://hi.baidu.com/netboyhizone/blog/item/7021490f99c241206059f3d7.html
lllyyy2403 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 wangfou 的回复:]
目的:利用VC调用Openoffice的接口对其进行读写操作
问题:我不知道该怎么做,嘿嘿,有没有接触过这个东西的啊? 简单的介绍下流程呗。。。谢谢啦


备注:我从Openoffice网站上下载了一个SDK,看到了里面有一些c++的API函数,但是一头雾水,不知从何入手。大侠们棒棒忙了
[/Quote]
你得先安装相应的SDK才能使用这些API啊,与WIN不一样,你直接用就可以了。
dragoo1 2010-01-11
  • 打赏
  • 举报
回复
up
xwsn007 2010-01-11
  • 打赏
  • 举报
回复
MARK,我也想知道
MoXiaoRab 2010-01-11
  • 打赏
  • 举报
回复
那得看那个SDK了。我们没用过OpenOffice SDK啊,自然帮不上忙。你要好好研究下那个SDK.不懂的可以发上来问
wangfou 2010-01-11
  • 打赏
  • 举报
回复
顶一下,难道高手不愿 赐教吗?
wangfou 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 loseway 的回复:]
我们操纵Word需要通过类型库中的MFC类。而这些类,应该都是基于一个叫COleDispatchDriver的类。至少我所了解到的都是这样。

COleDispatchDriver没有基类。COleDispatchDriver类实现OLE自动化中的客户方。OLE调度接口为访问一个对象的方法和属性提供了途径。COleDispatchDriver的成员函数连接,分离,创建和释放一个IDispatch类型的调度连接。其它的成员函数使用变量参数列表来简化调用IDispatch::Invoke。

学习如何自动化控制 Word、Excel 和 Powerpoint 的对象模型的最佳方法是使用这些 Office 应用程序中的宏录制器:

从工具菜单上的宏选项中选择录制新宏,然后执行您感兴趣的任务。
从工具菜单上的宏选项中选择停止录制。
完成录制后,从工具菜单上的宏选项中选择宏,选择您录制的宏,然后单击编辑。
您将看到生成的 VBA 代码,该代码可完成您所录制的任务。记住,录制的宏在大多数情况下并不是最佳代码,但它可以提供快捷可用的示例。

Application:代表 Microsoft Word 应用程序。Application 对象包含可返回最高级对象的属性和方法。例如,ActiveDocument 属性可返回当前活动的Document 对象。

Documents:由 Word 当前打开的所有 Document(文档) 对象所组成的集合。

Document:代表一篇文档。Document 对象是 Documents 集合中的一个元素。Documents 集合包含 Word 当前打开的所有 Document 对象。

Selection:该对象代表窗口或窗格中的当前所选内容。所选内容代表文档中被选定(或突出显示的)的区域,若文档中没有所选内容,则代表插入点。每个文档窗格只能有一个活动的 Selection 对象,并且整个应用程序中只能有一个活动的 Selection 对象。

例子1:

C/C++ code
#include"msword9.h"//为了使代码集中,方便阅读,所以把头文件放到了这里void CStep1Dlg::OnOK()
{
_Application app;//定义一个WORD的应用对象if(!app.CreateDispatch(_T("Word.Application")))//启动WORD{
AfxMessageBox(_T("居然你连OFFICE都没有安装吗?"));return;
}

AfxMessageBox(_T("WORD 已经运行启动啦,你可以用Ctrl+Alt+Del查看"));
app.SetVisible(TRUE);//设置WORD可见。//当然,如果你想要悄悄地调用WORD的功能,则注释掉这条语句AfxMessageBox(_T("现在你已经看到WORD的程序界面了吧"));

AfxMessageBox(_T("WORD准备要退出啦"));
VARIANT SaveChanges,OriginalFormat,RouteDocument;//定义调用QUIT时使用的参数SaveChanges.vt=VT_BOOL;//设置退出WORD时候的保存参数SaveChanges.boolVal=VARIANT_FALSE;//为不保存任何文档,模板及设置
::VariantInit(&OriginalFormat);//清空变量RouteDocument.vt=VT_EMPTY;//清空变量的另一种方法//调用Quit退出WORD应用程序。当然不调用也可以,那样的话WORD还在运行着那app.Quit(&SaveChanges,&OriginalFormat,&RouteDocument);

app.ReleaseDispatch();//释放对象指针。切记,必须调用
AfxMessageBox(_T("Step1执行完成。接着请学习Setp2"));
}

……
http://hi.baidu.com/netboyhizone/blog/item/7021490f99c241206059f3d7.html
[/Quote]


别TMD 整这些没用的,我需要的是Openoffice
wangfou 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lllyyy2403 的回复:]
引用楼主 wangfou 的回复:
目的:利用VC调用Openoffice的接口对其进行读写操作
问题:我不知道该怎么做,嘿嘿,有没有接触过这个东西的啊? 简单的介绍下流程呗。。。谢谢啦


备注:我从Openoffice网站上下载了一个SDK,看到了里面有一些c++的API函数,但是一头雾水,不知从何入手。大侠们棒棒忙了

你得先安装相应的SDK才能使用这些API啊,与WIN不一样,你直接用就可以了。
[/Quote]


请看明白我的帖子,我已经下载了SDK,但是不知该从何下手。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧