Munkafüzet-dokumentumok szerkesztése
Míg az előző rész a munkafüzet-dokumentumok szerkezetét írta le, ez a rész a egyes cellák és cellatartományokhoz való egyszerű hozzáférést biztosító szolgáltatásokat írja le.
Cellatartományok
Az egyes cellaobjektumokon felül (com.sun.star.table.Cell szolgáltatás) az Apache OpenOffice cellatartományokat kezelő objektumokat is biztosít. Például a CellRange objektumok a munkafüzet-objektumok getCellRangeByName metódusával hozhatók létre:
Dim Doc As Object
Dim Sheet As Object
Dim CellRange As Object
Doc = ThisComponent
Sheet = Doc.Sheets.getByName("Sheet 1")
CellRange = Sheet.getCellRangeByName("A1:C15")
A munkafüzet-dokumentum cellatartományát kettősponttal (:) lehet megadni. Például az A1:C15 hivatkozás az 1-15 oszlopok celláit jelöli az A, B és C oszlopban.
A cellatartomány egyes celláinak helye a getCellByPosition metódussal határozható meg, ahol a cellatartomány bal felső cellájának koordinátái (0, 0). A következő példa ezt a metódust használja a C3 cella objektumának létrehozásához.
Dim Doc As Object
Dim Sheet As Object
Dim CellRange As Object
Dim Cell As Object
Doc = ThisComponent
Sheet = Doc.Sheets.getByName("Sheet 1")
CellRange = Sheet.getCellRangeByName("B2:D4")
Cell = CellRange.GetCellByPosition(1, 1)
Cellatartományok formázása
Ahogy az egyes cellák, úgy a cellatartományok is a com.sun.star.table.CellProperties szolgáltatással formázhatók. További információkért és példákért lásd: Munkafüzet-dokumentumok formázása.
Számolás cellatartományokkal
A computeFunction metódussal matematikai műveleteket végezhetünk a cellatartományokon. A computeFunction metódus egy állandót vár paraméterként, amely leírja a használni kívánt matematikai függvényt. A hozzátartozó állandók a com.sun.star.sheet.GeneralFunction enumerációban vannak definiálva. A következő értékek használhatók:
- SUM
- a numerikus értékek összege.
- COUNT
- az értékek száma (beleértve a nem numerikus értékeket is).
- COUNTNUMS
- a numerikus értékek száma.
- AVERAGE
- a numerikus értékek átlaga.
- MAX
- a legnagyobb numerikus érték.
- MIN
- a legkisebb numerikus érték.
- PRODUCT
- a numerikus értékek szorzata.
- STDEV
- szórás.
- VAR
- szórásnégyzet.
- STDEVP
- szórás a teljes populációra vetítve.
- VARP
- szórásnégyzet a teljes populációra vetítve.
A következő példa kiszámítja az átlagát az A1:C3 tartománynak, és megjeleníti az eredményt egy üzenetablakban:
Dim Doc As Object
Dim Sheet As Object
Dim CellRange As Object
Doc = ThisComponent
Sheet = Doc.Sheets.getByName("Sheet 1")
CellRange = Sheet.getCellRangeByName("A1:C3")
MsgBox CellRange.computeFunction(com.sun.star.sheet.GeneralFunction.AVERAGE)
Cellatartalmak törlése
A clearContents metódus leegyszerűsíti a cellatartalmak és cellatartományok törlését azzal, hogy egy adott típusú tartalmat töröl egy cellatartományból.
A következő példa eltávolítja az összes karakterláncot és közvetlen formázási információt a B2:C3 tartományból.
Dim Doc As Object
Dim Sheet As Object
Dim CellRange As Object
Dim Flags As Long
Doc = ThisComponent
Sheet = Doc.Sheets(0)
CellRange = Sheet.getCellRangeByName("B2:C3")
Flags = com.sun.star.sheet.CellFlags.STRING + _
com.sun.star.sheet.CellFlags.HARDATTR
CellRange.clearContents(Flags)
A clearContents metódusban megadott jelzők a com.sun.star.sheet.CellFlags állandólistából származnak. Ez a lista a következő elemeket biztosítja:
- VALUE
- numerikus érték, amely nem dátumként vagy időként van formázva.
- DATETIME
- numerikus érték, amely dátumként vagy időként van formázva.
- STRING
- karakterláncok.
- ANNOTATION
- cellákhoz csatolt megjegyzések.
- FORMULA
- képletek.
- HARDATTR
- cellák közvetlen formázása.
- STYLES
- közvetett formázás.
- OBJECTS
- cellákhoz csatolt rajzobjektumok.
- EDITATTR
- csak a cellák részeire vonatkozó karakterformázás.
Az állandókat össze is adhatjuk, hogy a clearContents metódussal különböző információkat töröljünk.
Cellatartalmak keresése és cseréje
A munkafüzet-dokumentumok – akárcsak a szöveges dokumentumok – keresési és cserefunkciót biztosítanak.
A munkafüzet-dokumentumokban a kereséshez és cseréhez használt leíróobjektum nem közvetlenül a dokumentumobjektumon keresztül van létrehozva, hanem a Sheets listán keresztül. A következő példa bemutatja a keresési és cserefolyamatot:
Dim Doc As Object
Dim Sheet As Object
Dim ReplaceDescriptor As Object
Dim I As Integer
Doc = ThisComponent
Sheet = Doc.Sheets(0)
ReplaceDescriptor = Sheet.createReplaceDescriptor()
ReplaceDescriptor.SearchString = "kutya"
ReplaceDescriptor.ReplaceString = "macska"
For I = 0 to Doc.Sheets.Count - 1
Sheet = Doc.Sheets(I)
Sheet.ReplaceAll(ReplaceDescriptor)
Next I
Ez a példa a dokumentum első oldalát használja a ReplaceDescriptor létrehozásához, és aztán ezt alkalmazza az összes oldalra egy ciklusban.
Content on this page is licensed under the Public Documentation License (PDL). |