这几年,做了很多word/excel/ppt方面的开发,特别是office插件/vsto/oba,和各种支持activex的ole嵌入环境下的应用。
基本上,了解了office对象模型,就可以在支持ole的环境下游刃有余的使用接口进行开发了。
不过office本身是不支持ole的,一般需要一个native的“外壳”包裹住,然后再在我们开发的环境下ole这个外壳。
例如,web页面或一般环境中,使用dsoframer。SWT中使用OleClientSite。
这里讲讲OleClientSite。
windows下,SWT中(OS类)封装了绝大部分常见的win32 api。而且SWT中的组件都是系统原生的,或是组合的,
所以调用Activex的窗口并交互成为了可能(AWT可以拿到原生窗口的句柄,也能别别扭扭的实现,纯swing不是原生的,所以是拿不到的),
OleClientSite封装了调用Activex并交互的细节。
大概的方式是:传给OleClientSite一个Activex的progID,初始化一个Activex,并挂接到制定的composite上,
然后根据容器对Activex调用设置大小长宽。接着,通过一个OleAutomation封装一个Activex中的原生对象的引用指针,
然后可以用getIDsOfNames根据属性名或是方法名获取对应id(做过mfc/atl-activex的都知道这个在IDL文件中注册的id)。
然后可以调用OleAutomation的 getProperty/setProperty/invoke/invokeNoReply 等方法,获取属性或调用相应的方法。
当然返回结果可能还是原生对象,可以继续用OleAutomation包装,然后重复上面的过程。
SWT还提供了一个通用的类型包装器,用来原生的几种常见c类型和java类型的转换:Variant。(很像vb里的那个吧)
------------------------------------- 想了解的看SWT源码和com本质论去 -----------------------------------
附件是一个嵌入word,并定位word文档中的字符串的例子。
ListOLE是传递一个OleAutomation,列出所有方法的工具类。源于网上。
txt文件夹提供了word.Application 和 word.Document对象的所有com接口方法和属性。
运行Word.java,展示word文件:
点击menu1,搜索定位字符串bbbbb:
分享到:
相关推荐
OleView OLE/COM OLE/COM对象浏览器
OLE允许用户在不同的应用程序中嵌入和链接数据,比如在一个文档中嵌入图表或图片,这些元素可以在各自的源程序中编辑。COM则是OLE的基础,它定义了一种标准接口,使得不同组件之间可以进行跨语言、跨进程的通信。 ...
OLE是微软提出的一种技术,允许在一个文档中嵌入或链接到另一个文档,例如在Word文档中插入Excel表格。而COM是OLE的基础,它定义了一种标准接口,使得不同程序之间可以交互操作,实现了软件组件的复用和互操作性。 ...
去OLE 使用共享库而不是cgo为Windows COM进行绑定。 松本康弘。 安装 要试验go-ole,您可以编译并运行示例程序: go get github.com/go-ole/go-ole cd /path/to/go-ole/ go test cd /path/to/go-ole/example/...
2. Excel OLE 对象:Excel 是一个 OLE 对象,我们可以使用 OleClientSite 来将其嵌入到 SWT 应用程序中。在本例中,我们使用 "Excel.Sheet" 作为 OLE 对象的 Id,表示要嵌入 Excel 工作表。 3. SWT 控件:在本例中,...
【windows上默认没有,此处提供给大家...OLE/COM 对象查看器(oleview.exe)是在 Windows SDK 中提供的应用程序,它显示计算机上安装的 COM 对象及其支持的接口。 默认安装路径在C:\Program Files (x86)\Resource Kit
【标题】"Go-go-ole-golang的Win32OLE实现"主要涉及到的是在Go语言中如何使用`go-ole`库来实现Windows操作系统上的Win32对象链接与嵌入(OLE)技术。OLE是微软在Windows平台上实现的一个组件对象模型(COM),它允许...
在SWT中使用OLE操纵Excel入门培训文档,里面整理了很多资源,下载的请使劲戳
OLEDB(Object Linking and Embedding, Database)是微软提出的一种数据访问接口,它允许应用程序通过统一的方式访问各种数据源,包括数据库、文件系统、Web服务等。在本主题中,我们将聚焦于MySQL-OleDB-Provider,...
OLE控件是VB工具箱中的一种,它充当一个容器,用于在VB界面中插入和展示OLE对象。当在VB窗体上添加OLE控件时,会出现“插入对象”对话框,让用户选择要插入的文件或内容。插入对象可以是整个文件,也可以是文件的一...
SWT 使用 OLE 函数调用com控件的资料 SWT 使用 OLE 函数调用com控件的资料SWT 使用 OLE 函数调用com控件的资料SWT 使用 OLE 函数调用com控件的资料 SWT 使用 OLE 函数调用com控件的资料
C++Builder是一个集成开发环境(IDE),它提供了丰富的工具和类库,支持创建Windows应用程序,包括与Office套件的交互。 在C++Builder中,我们通常会使用VCL(Visual Component Library)框架,它包含了`TOleClient...
为了更好地理解上述过程,下面提供了一个简化的代码示例,展示如何使用OLE自动化技术在VC平台上自动创建Word文档并插入文本: ```cpp #include #include #include #include int main() { CoInitialize(NULL);...
OleDb是一个数据库驱动接口,能够通过标准的 SQL 语句访问多种数据库,包括 Excel。这种方法的好处是不需要依赖 Excel 应用程序,可以在没有安装 Microsoft Office 的服务器或机器上读取 Excel 数据。在使用OleDb...
在本话题中,我们将深入探讨“OLEDB驱动程序大全”中的一个特定组件——PostgreSQL OLEDB Provider。 PostgreSQL OLEDB Provider是用于连接和操作PostgreSQL数据库的OLEDB驱动程序。PostgreSQL是一种开源的关系型...
OLE是一种技术,允许不同应用程序之间共享数据,甚至可以在一个文档内嵌入和操作另一个应用程序的对象。例如,在Word文档中嵌入Excel表格。OLE使得用户能够创建复合文档,其中包含多种类型的数据,这些数据可以从...
**OLE** 是微软提出的一种复合文档技术,它允许在一个文档中嵌入或链接到另一个文档,使得不同应用程序之间可以共享数据和功能。例如,你可以在Word文档中嵌入Excel电子表格,或者在PowerPoint演示文稿中插入Visio...
1. **ActiveX 技术**:ActiveX 是微软的一个组件技术,它允许开发者创建可重用的软件组件,这些组件可以通过 OLE(Object Linking and Embedding)集成到其他应用程序中。ActiveX 控件是 ActiveX 技术的一种具体应用...
ole file viewer ext.exe
要实现在VC中创建Word文档,首先需要通过OLE技术创建一个Word对象。这一过程涉及以下几个关键步骤: 1. **获取函数定义头文件**:在使用Word函数之前,需要获取相应的函数定义头文件。这通常可以通过使用`midl`命令...