没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|其它|编辑:郝浩|2009-08-17 10:32:06.000|阅读 558 次
概述:本文讲解了VB对OOo开发的相关操作,其实对OOo的操作很简单,一般都是通过执行OOo提供的UNO相关命令进行的,执行方式和OOo中的marco基本上一个样,如果想做到什么想过,就可以先在OOo中录制一个marco,然后查看该marco的代码,在VB中转换就可以了。最后,将本文的demo代码附上,以供参考!
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
随着经济的不景气,越来越多的公司将办公软件从较昂贵的MS Office转换为便宜甚至免费的Open Office.org(简称OOo),毕竟OOo几乎可以满足所有的日常办公需求,并且兼容MS Office,那么作为开发人员的我们必须对OOo的开发进行了解。
本序列包括OOo on ready---VB篇和OOo on ready---C#篇
本文开篇使用VB做开发语言对scalc来做一个Demo,演示OOo的一些常用开发。
一、OOo的基本操作
该处需要做以下四个动作:
1、打开OpenOffice服务:
Set mySM = CreateObject("com.sun.star.ServiceManager")
2、打开OpenOffice程序:
Set myDesk = mySM.createInstance("com.sun.star.frame.Desktop")
3、创建OpenOffice文件:
Set myFile = myDesk.loadComponentFromURL("private:factory/scalc", "_blank", 0, myArgs())
4、获取OpenOffice工作薄:
Set mySheet = mySheets.getByIndex(0)
5、获得当前文档:
Set document = myDesk.CurrentComponent.CurrentController.Frame
6、创建一个dispatcher(调度器?):
Set dispatcher = mySM.createInstance("com.sun.star.frame.DispatchHelper")
有了这些,就可以对对单元格进行操作了:比如写入字符串
Set myCell = mySheet.getCellByPosition(0, 0) Call myCell.setString("Normal Material Application")
二、将MSFlexGrid内的数据导出为scalc文件
做一中的前4步以获得一个工作薄,之后就可以使用那个如下方法将数据导入到scale中:
With gData For i = 0 To .Rows - 1 If i = 0 Then For j = 0 To .Cols - 1 Set myCell = mySheet.getCellByPosition(j, i) Call myCell.setString(.TextMatrix(i, j)) Next j Else For j = 0 To .Cols - 1 If j = 0 Then Set myCell = mySheet.getCellByPosition(j, i) Call myCell.setString(.TextMatrix(i, j)) Else Set myCell = mySheet.getCellByPosition(j, i) Call myCell.setValue(Val(.TextMatrix(i, j))) End If Next j End If Next i End With
表格的相关属性我们将在下面的文字中描述。
三、在scalc文件内绘制chart图
同样的,要做一中的前4步以获得一个工作薄,然后
1、获得一个矩形序列:
Set Rect = mySM.Bridge_GetStruct("com.sun.star.awt.Rectangle")
2、获得一个cell地址:
Set RangeAddress(0) = mySM.Bridge_GetStruct("com.sun.star.table.CellRangeAddress")
3、在当前工作薄内插入一个chart图:
Call Charts.addNewByName("LineChart", Rect, RangeAddress(), True, True)
4、获得该chart图:
Set Chart = Charts.getByName("LineChart").embeddedObject
5、对该chart图的相关属性进行赋值或者修改,比如,修改该图的形状:
Chart.Diagram = Chart.createInstance("com.sun.star.chart.LineDiagram")
这里有各种chart图的形状如下
//Diagram Service Names //com.sun.star.chart.BarDiagram //com.sun.star.chart.AreaDiagram //com.sun.star.chart.LineDiagram //com.sun.star.chart.PieDiagram //com.sun.star.chart.DonutDiagram //com.sun.star.chart.NetDiagram //com.sun.star.chart.XYDiagram //com.sun.star.chart.StockDiagram
四、在scalc文件内插入一张图片
同样运行一中的6个步骤获得一个dispatcher,然后使用该dispatcher来运行OOo中的UNO命令
Call dispatcher.executeDispatch(document, ".uno:InsertGraphic", "", 0, args2())
其中args2()是一个相关属性值的数组,需要使用如下方法进行定义:
Set args2(0) = mySM.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
赋值方法很简单,使用.Name及.Value进行赋值,如:
args2(0).Name = "FilterName" args2(0).Value = "GIF - Graphics Interchange Format"
上面的属性是定义插入的该图片的后缀名必须为GIF.
五、在scalc文件内表格的属性进行设置
在OOo的文件中,相关属性是先定义一个PropertyValue,再对该属性设置Name、Value,然后使用dispatcher让OOo去执行该属性。
例如我们对表格的单元格的宽度进行设置,就可以使用如下的函数进行:
Public Function setColWidth(mySM As Object, mySheet As Object, document
As Object, dispatcher As Object, cellValue As String, lngWidth As Long) 'Select Cells Dim args1(0) As Object Set args1(0) = mySM.Bridge_GetStruct("com.sun.star.beans.PropertyValue") args1(0).Name = "ToPoint" args1(0).Value = cellValue Call dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1()) Dim args2(0) As Object Set args2(0) = mySM.Bridge_GetStruct("com.sun.star.beans.PropertyValue") args2(0).Name = "ColumnWidth" args2(0).Value = lngWidth Call dispatcher.executeDispatch(document, ".uno:ColumnWidth", "", 0, args2()) End Function
对表格的表框进行设置我们就可以使用如下函数进行:
Public Function addBorder(mySM As Object, mySheet As Object, document As Object, dispatcher As Object, cellValue As String) 'Select Cells Dim args1(0) As Object Set args1(0) = mySM.Bridge_GetStruct("com.sun.star.beans.PropertyValue") args1(0).Name = "ToPoint" args1(0).Value = cellValue Call dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1()) Dim args5(12) As Object Set args5(0) = mySM.Bridge_GetStruct("com.sun.star.beans.PropertyValue") Set args5(1) = mySM.Bridge_GetStruct("com.sun.star.beans.PropertyValue") Set args5(2) = mySM.Bridge_GetStruct("com.sun.star.beans.PropertyValue") Set args5(3) = mySM.Bridge_GetStruct("com.sun.star.beans.PropertyValue") Set args5(4) = mySM.Bridge_GetStruct("com.sun.star.beans.PropertyValue") Set args5(5) = mySM.Bridge_GetStruct("com.sun.star.beans.PropertyValue") Set args5(6) = mySM.Bridge_GetStruct("com.sun.star.beans.PropertyValue") Set args5(7) = mySM.Bridge_GetStruct("com.sun.star.beans.PropertyValue") Set args5(8) = mySM.Bridge_GetStruct("com.sun.star.beans.PropertyValue") Set args5(9) = mySM.Bridge_GetStruct("com.sun.star.beans.PropertyValue") Set args5(10) = mySM.Bridge_GetStruct("com.sun.star.beans.PropertyValue") Set args5(11) = mySM.Bridge_GetStruct("com.sun.star.beans.PropertyValue") Set args5(12) = mySM.Bridge_GetStruct("com.sun.star.beans.PropertyValue") args5(0).Name = "OuterBorder.LeftBorder" args5(0).Value = Array(0, 0, 2, 0) args5(1).Name = "OuterBorder.LeftDistance" args5(1).Value = 0 args5(2).Name = "OuterBorder.RightBorder" args5(2).Value = Array(0, 0, 2, 0) args5(3).Name = "OuterBorder.RightDistance" args5(3).Value = 0 args5(4).Name = "OuterBorder.TopBorder" args5(4).Value = Array(0, 0, 2, 0) args5(5).Name = "OuterBorder.TopDistance" args5(5).Value = 0 args5(6).Name = "OuterBorder.BottomBorder" args5(6).Value = Array(0, 0, 2, 0) args5(7).Name = "OuterBorder.BottomDistance" args5(7).Value = 0 args5(8).Name = "InnerBorder.Horizontal" args5(8).Value = Array(0, 0, 2, 0) args5(9).Name = "InnerBorder.Vertical" args5(9).Value = Array(0, 0, 2, 0) args5(10).Name = "InnerBorder.Flags" args5(10).Value = 0 args5(11).Name = "InnerBorder.ValidFlags" args5(11).Value = 127 args5(12).Name = "InnerBorder.DefaultDistance" args5(12).Value = 0 Call dispatcher.executeDispatch(document, ".uno:SetBorderStyle", "", 0, args5()) End Function
六、总结一下
本文讲解了VB对OOo开发的相关操作,其实对OOo的操作很简单,一般都是通过执行OOo提供的UNO相关命令进行的,执行方式和OOo中的marco基本上一个样,如果想做到什么想过,就可以先在OOo中录制一个marco,然后查看该marco的代码,在VB中转换就可以了。最后,将本文的demo代码附上,以供参考!
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
文章转载自:博客园接DevExpress原厂商通知,将于近日上调旗下产品授权价格,现在下单客户可享受优惠报价!
面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号