日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OOo on ready---VB篇

發布時間:2024/4/17 编程问答 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OOo on ready---VB篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

隨著經濟的不景氣,越來越多的公司將辦公軟件從較昂貴的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 gDataFor i = 0 To .Rows - 1If i = 0 ThenFor j = 0 To .Cols - 1Set myCell = mySheet.getCellByPosition(j, i)Call myCell.setString(.TextMatrix(i, j))Next jElseFor j = 0 To .Cols - 1If j = 0 ThenSet myCell = mySheet.getCellByPosition(j, i)Call myCell.setString(.TextMatrix(i, j))ElseSet myCell = mySheet.getCellByPosition(j, i)Call myCell.setValue(Val(.TextMatrix(i, j)))End IfNext jEnd IfNext iEnd 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").embeddedObject5、對該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 CellsDim args1(0) As ObjectSet args1(0) = mySM.Bridge_GetStruct("com.sun.star.beans.PropertyValue")args1(0).Name = "ToPoint"args1(0).Value = cellValueCall dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())Dim args2(0) As ObjectSet args2(0) = mySM.Bridge_GetStruct("com.sun.star.beans.PropertyValue")args2(0).Name = "ColumnWidth"args2(0).Value = lngWidthCall 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 CellsDim args1(0) As ObjectSet args1(0) = mySM.Bridge_GetStruct("com.sun.star.beans.PropertyValue")args1(0).Name = "ToPoint"args1(0).Value = cellValueCall dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())Dim args5(12) As ObjectSet 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 = 0args5(2).Name = "OuterBorder.RightBorder"args5(2).Value = Array(0, 0, 2, 0)args5(3).Name = "OuterBorder.RightDistance"args5(3).Value = 0args5(4).Name = "OuterBorder.TopBorder"args5(4).Value = Array(0, 0, 2, 0)args5(5).Name = "OuterBorder.TopDistance"args5(5).Value = 0args5(6).Name = "OuterBorder.BottomBorder"args5(6).Value = Array(0, 0, 2, 0)args5(7).Name = "OuterBorder.BottomDistance"args5(7).Value = 0args5(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 = 0args5(11).Name = "InnerBorder.ValidFlags"args5(11).Value = 127args5(12).Name = "InnerBorder.DefaultDistance"args5(12).Value = 0Call dispatcher.executeDispatch(document, ".uno:SetBorderStyle", "", 0, args5())End Function

?

六、總結一下

本文講解了VB對OOo開發的相關操作,其實對OOo的操作很簡單,一般都是通過執行OOo提供的UNO相關命令進行的,執行方式和OOo中的marco基本上一個樣,如果想做到什么想過,就可以先在OOo中錄制一個marco,然后查看該marco的代碼,在VB中轉換就可以了。最后,將本文的demo代碼附上,以供參考!

更多技術文章,敬請登陸http://www.qx-net.cn/

轉載于:https://www.cnblogs.com/frankie/archive/2009/08/16/1547566.html

總結

以上是生活随笔為你收集整理的OOo on ready---VB篇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。