ເນື້ອໃນ

# ບໍລິການ SFDocuments.Calc

ໄລບຣາຣີທີ່ໃຊ້ຮ່ວມກັນ SFDocuments ມີຫຼາຍເມທອດ ແລະ ຄຸນສົມບັດ ເພື່ອອຳນວຍຄວາມສະດວກໃນການຈັດການ ແລະ ການດຳເນີນການກັບເອກະສານ LibreOffice.

ບໍລິການ SFDocuments.Calc ແມ່ນຄລາດຍ່ອຍ (subclass) ຂອງບໍລິການ SFDocuments.Document. ເມທອດ ແລະ ຄຸນສົມບັດທັງໝົດທີ່ກຳນົດໄວ້ສຳລັບບໍລິການ Document ຍັງສາມາດເຂົ້າເຖິງໄດ້ໂດຍໃຊ້ອິນສະແຕນຊ໌ຂອງບໍລິການ Calc.

ບໍລິການ Calc ເນັ້ນໃສ່:

- ການຈັດການແຜ່ນງານພາຍໃນເອກະສານ Calc (ສຳເນົາ, ແຊກ, ຍ້າຍ, ແລະ ອື່ນໆ)

- ການແລກປ່ຽນຂໍ້ມູນລະຫວ່າງໂຄງສ້າງຂໍ້ມູນ Basic ແລະ ຊ່ວງຂອງ Calc

- ການສຳເນົາ ແລະ ການນຳເຂົ້າຂໍ້ມູນຈຳນວນມະຫາສານ

ໜ້າຊ່ວຍເຫຼືອນີ້ອະທິບາຍກ່ຽວກັບເມທອດ ແລະ ຄຸນສົມບັດທີ່ໃຊ້ໄດ້ກັບເອກະສານ Calc ເທົ່ານັ້ນ.

## ການເອີ້ນໃຊ້ບໍລິການ

ກ່ອນທີ່ຈະໃຊ້ບໍລິການ Calc, ໄລບຣາຣີ ScriptForge ຈຳເປັນຕ້ອງໄດ້ຖືກໂຫລດ ຫຼື ນຳເຂົ້າກ່ອນ:

• ມາໂຄຣ Basic ຕ້ອງມີການໂຫຼດຄັງສຳນວນ ScriptForge ໂດຍໃຊ້ຄຳສັ່ງດັ່ງນີ້:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• ສະຄຣິບ Python ຕ້ອງມີການນຳເຂົ້າຈາກໂມດູນ scriptforge:
from scriptforge import CreateScriptService

ບໍລິການ Calc ມີຄວາມກ່ຽວຂ້ອງກັນຢ່າງໃກ້ຊິດກັບບໍລິການ UI ຂອງໄລບຣາຣີ ScriptForge. ລຸ່ມນີ້ແມ່ນຕົວຢ່າງບາງສ່ວນຂອງວິທີການເອີ້ນໃຊ້ບໍລິການ Calc.

##### ໃນ Basic

ສ່ວນຂອງໂຄ້ດລຸ່ມນີ້ຈະສ້າງອິນສະແຕນຊ໌ຂອງບໍລິການ Calc ທີ່ກົງກັບເອກະສານ Calc ທີ່ກຳລັງເຮັດວຽກຢູ່ປັດຈຸບັນ.

        Set oDoc = CreateScriptService("Calc")

ອີກວິທີໜຶ່ງໃນການສ້າງອິນສະແຕນຊ໌ຂອງບໍລິການ Calc ແມ່ນການໃຊ້ບໍລິການ UI. ໃນຕົວຢ່າງຕໍ່ໄປນີ້, ເອກະສານ Calc ໃໝ່ຈະຖືກສ້າງຂຶ້ນ ແລະ oDoc ຈະເປັນອິນສະແຕນຊ໌ຂອງບໍລິການ Calc:

        Dim ui As Object, oDoc As Object
        Set ui = CreateScriptService("UI")
        Set oDoc = ui.CreateDocument("Calc")

ຫຼື ໃຊ້ເມທອດ OpenDocument ຈາກບໍລິການ UI:

        Set oDoc = ui.OpenDocument("C:\Documents\MyFile.ods")

ນອກຈາກນັ້ນ ຍັງສາມາດສ້າງອິນສະແຕນຊ໌ຂອງບໍລິການ Calc ໂດຍການລະບຸຊື່ໜ້າຕ່າງສຳລັບເມທອດ CreateScriptService:

        Dim oDoc As Object
        Set oDoc = CreateScriptService("SFDocuments.Calc", "MyFile.ods")

ໃນຕົວຢ່າງຂ້າງເທິງ, "MyFile.ods" ແມ່ນຊື່ຂອງໜ້າຕ່າງເອກະສານທີ່ເປີດຢູ່. ຖ້າບໍ່ໄດ້ລະບຸອາກິວເມນນີ້, ຈະຖືວ່າເປັນໜ້າຕ່າງທີ່ກຳລັງເຮັດວຽກຢູ່.

ນອກຈາກນີ້ ຍັງສາມາດເອີ້ນໃຊ້ບໍລິການ Calc ໂດຍໃຊ້ເອກະສານທີ່ອ້າງອີງໂດຍ ThisComponent. ສິ່ງນີ້ມີປະໂຫຍດເປັນພິເສດເມື່ອສັ່ງໃຫ້ມາໂຄຣເຮັດວຽກຈາກພາຍໃນ Basic IDE.

        Dim oDoc As Object
        Set oDoc = CreateScriptService("Calc", ThisComponent)

ຂໍແນະນຳໃຫ້ຄືນຊັບພະຍາກອນ (free resources) ຫຼັງຈາກໃຊ້ງານແລ້ວ:

        Set oDoc = oDoc.Dispose()

ແນວໃດກໍຕາມ, ຖ້າເອກະສານຖືກປິດໂດຍໃຊ້ເມທອດ CloseDocument, ກໍບໍ່ຈຳເປັນທີ່ຈະຕ້ອງຄືນຊັບພະຍາກອນໂດຍໃຊ້ຄຳສັ່ງທີ່ອະທິບາຍໄວ້ຂ້າງເທິງ.

##### ໃນ Python

        myDoc = CreateScriptService("Calc")

        ui = CreateScriptService("UI")
        myDoc = ui.CreateDocument("Calc")

        myDoc = ui.OpenDocument(r"C:\Documents\MyFile.ods")

        myDoc = CreateScriptService("SFDocuments.Calc", "MyFile.ods")
        myDoc.Dispose()

        bas = CreateScriptService("Basic")
        myDoc = CreateScriptService("Calc", bas.ThisComponent)

ການໃຊ້ຄຳນຳໜ້າ "SFDocuments." ໃນຂະນະທີ່ເອີ້ນໃຊ້ບໍລິການແມ່ນເປັນທາງເລືອກ.

## ຄຳນິຍາມ

ຫຼາຍເມທອດຕ້ອງການ "ແຜ່ນງານ" ຫຼື "ຊ່ວງ" ເປັນອາກິວເມນ. ເຊວສ່ຽວຖືວ່າເປັນກໍລະນີພິເສດຂອງ ຊ່ວງ.

ທັງສອງອາດຈະຖືກສະແດງອອກເປັນຂໍ້ຄວາມ (string) ຫຼື ເປັນການອ້າງອີງ (= ວັດຖຸ) ຂຶ້ນກັບສະຖານະການ:

- ພາຍໃນ ອິນສະແຕນຊ໌ Calc ທີ່ລະບຸ, ແຜ່ນງານ ແລະ ຊ່ວງຈະຖືກລະບຸເປັນຂໍ້ຄວາມ ເຊັ່ນ "Sheet1" ແລະ "D2:F6".

- ນອກຈາກນັ້ນ, ຄຸນສົມບັດ .Sheet ແລະ .Range ຈະສົ່ງຄືນການອ້າງອີງທີ່ສາມາດໃຊ້ເປັນອາກິວເມນຂອງເມທອດທີ່ເອີ້ນຈາກ ອິນສະແຕນຊ໌ອື່ນ ຂອງບໍລິການ Calc.

### ຕົວຢ່າງ:

ຕົວຢ່າງລຸ່ມນີ້ຈະສຳເນົາຂໍ້ມູນຈາກເອກະສານ A (ທີ່ເປີດເປັນແບບອ່ານຢ່າງດຽວ ແລະ ຖືກເຊື່ອງໄວ້) ໄປຫາເອກະສານ B.

##### ໃນ Basic

        Dim oDocA As Object, oDocB As Object
        Set oDocA = ui.OpenDocument("C:\Documents\FileA.ods", Hidden := True, ReadOnly := True)
        Set oDocB = ui.OpenDocument("C:\Documents\FileB.ods")
        oDocB.CopyToRange(oDocA.Range("SheetX.D4:F8"), "D2:F6") 'CopyToRange(source, target)

##### ໃນ Python

        docA = ui.OpenDocument(r"C:\Documents\FileA.ods", hidden = True, readonly = True)
        docB = ui.OpenDocument(r"C:\Documents\FileB.ods")
        docB.CopyToRange(docA.Range("SheetX.D4:F8"), "D2:F6")

### SheetName

ອາດເປັນຊື່ແຜ່ນງານໃນຮູບແບບ ຂໍ້ຄວາມ ຫຼື ເປັນ ວັດຖຸ ທີ່ສ້າງໂດຍຄຸນສົມບັດ .Sheet.

ທາງລັດ "~" (tilde) ໝາຍເຖິງແຜ່ນງານປັດຈຸບັນ.

### RangeName

ອາດເປັນຂໍ້ຄວາມທີ່ກຳນົດຊຸດຂອງເຊວທີ່ຢູ່ຕິດກັນໃນແຜ່ນງານຂອງອິນສະແຕນຊ໌ປັດຈຸບັນ ຫຼື ເປັນ ວັດຖຸ ທີ່ສ້າງໂດຍຄຸນສົມບັດ .Range.

ທາງລັດ "~" (tilde) ໝາຍເຖິງສິ່ງທີ່ເລືອກໄວ້ປັດຈຸບັນ ຫຼື ຊ່ວງທຳອິດທີ່ຖືກເລືອກ ຫາກມີການເລືອກຫຼາຍຊ່ວງ.

ທາງລັດ "*" ໝາຍເຖິງເຊວທັງໝົດທີ່ມີການໃຊ້ງານ.

ຊື່ແຜ່ນງານເປັນສິ່ງທີ່ຈະລະບຸຫຼືບໍ່ກໍໄດ້ເມື່ອກຳນົດຊ່ວງ. ຖ້າບໍ່ມີການລະບຸຊື່ແຜ່ນງານ, ຈະໃຊ້ແຜ່ນງານທີ່ກຳລັງເຮັດວຽກຢູ່. ການໃຊ້ເຄື່ອງໝາຍອັດຕະພາກດ່ຽວ (single quotes) ແລະ ເຄື່ອງໝາຍ $ ແມ່ນອະນຸຍາດໃຫ້ໃຊ້ໄດ້ແຕ່ຈະຖືກລະເລີຍ.

ເມື່ອລະບຸ SheetName ເປັນຂໍ້ຄວາມ, ຈຳເປັນຕ້ອງໃຊ້ເຄື່ອງໝາຍອັດຕະພາກດ່ຽວລ້ອມຮອບຊື່ແຜ່ນງານ ຫາກຊື່ນັ້ນມີຊ່ອງຫວ່າງ " " ຫຼື ເຄື່ອງໝາຍຈ້ຳ ".".

ຕົວຢ່າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນວ່າກໍລະນີໃດທີ່ຈຳເປັນຕ້ອງໃຊ້ເຄື່ອງໝາຍອັດຕະພາກດ່ຽວ:

          ' ການໃຊ້ເຄື່ອງໝາຍອັດຕະພາກດ່ຽວແມ່ນເປັນທາງເລືອກ
          oDoc.clearAll("SheetA.A1:B10")
          oDoc.clearAll("'SheetA'.A1:B10")
          ' ຈຳເປັນຕ້ອງໃຊ້ເຄື່ອງໝາຍອັດຕະພາກດ່ຽວ
          oDoc.clearAll("'Sheet.A'.A1:B10")

ຍົກເວັ້ນຄຸນສົມບັດ CurrentSelection, ບໍລິການ Calc ຈະພິຈາລະນາສະເພາະຊ່ວງເຊວດ່ຽວເທົ່ານັ້ນ.

ຕົວຢ່າງຂອງຊ່ວງທີ່ຖືກຕ້ອງ
1) $'SheetX'.D2 2) $D$2 | ເຊວດ່ຽວ
1) $'SheetX'.D2:F6 2) D2:D10 | ຊ່ວງດ່ຽວທີ່ມີຫຼາຍເຊວ
$'SheetX'.* | ເຊວທັງໝົດທີ່ມີການໃຊ້ງານໃນແຜ່ນງານທີ່ລະບຸ
1) $'SheetX'.A:A (ຄໍລຳ A) 2) 3:5 (ແຖວ 3 ຫາ 5) | ເຊວທັງໝົດໃນຄໍລຳ ຫຼື ແຖວທີ່ຢູ່ຕິດກັນ ຈົນຮອດເຊວສຸດທ້າຍທີ່ມີການໃຊ້ງານ
myRange | ຊ່ວງທີ່ຕັ້ງຊື່ວ່າ "myRange" ໃນລະດັບສະເປຣດຊີດ
1) ~.someRange 2) SheetX.someRange | ຊື່ຂອງຊ່ວງໃນລະດັບແຜ່ນງານ
myDoc.Range("SheetX.D2:F6") | ຊ່ວງພາຍໃນແຜ່ນງານ SheetX ໃນໄຟລ໌ທີ່ກ່ຽວຂ້ອງກັບອິນສະແຕນຊ໌ Calc ຂອງ myDoc
~.~ ຫຼື ~ | ສິ່ງທີ່ເລືອກໄວ້ປັດຈຸບັນໃນແຜ່ນງານທີ່ກຳລັງເຮັດວຽກຢູ່

## ຄຸນສົມບັດ

ຄຸນສົມບັດທົ່ວໄປທັງໝົດຂອງເອກະສານໃດໆ ກໍສາມາດໃຊ້ໄດ້ກັບເອກະສານ Calc ເຊັ່ນກັນ. ສຳລັບຂໍ້ມູນເພີ່ມເຕີມ, ກະລຸນາອ່ານທີ່ ໜ້າຊ່ວຍເຫຼືອບໍລິການ Document.

ຄຸນສົມບັດທີ່ມີໃຫ້ສະເພາະສຳລັບເອກະສານ Calc ແມ່ນ:

ຊື່ | ອ່ານຢ່າງດຽວ | ອາກິວເມນ | ປະເພດຂອງການສົ່ງຄືນ | ຄຳອະທິບາຍ
--- | --- | --- | --- | ---
CurrentSelection | ບໍ່ | ບໍ່ມີ | ຂໍ້ຄວາມ ຫຼື ອາເຣຂອງຂໍ້ຄວາມ | ຊ່ວງທີ່ເລືອກໄວ້ດ່ຽວໆເປັນຂໍ້ຄວາມ ຫຼື ລາຍການຂອງຊ່ວງທີ່ເລືອກເປັນອາເຣ.
FirstCell | ແມ່ນ | SheetName ຫຼື RangeName ເປັນຂໍ້ຄວາມ | String | ສົ່ງຄືນເຊວທຳອິດທີ່ມີການໃຊ້ງານໃນຊ່ວງ ຫຼື ແຜ່ນງານທີ່ລະບຸ.
FirstColumn | ແມ່ນ | SheetName ຫຼື RangeName ເປັນຂໍ້ຄວາມ | Long | ສົ່ງຄືນໝາຍເລກຄໍລຳທາງຊ້າຍສຸດໃນຊ່ວງ ຫຼື ແຜ່ນງານທີ່ລະບຸ.
FirstRow | ແມ່ນ | SheetName ຫຼື RangeName ເປັນຂໍ້ຄວາມ | Long | ສົ່ງຄືນໝາຍເລກແຖວເທິງສຸດໃນຊ່ວງ ຫຼື ແຜ່ນງານທີ່ລະບຸ.
Height | ແມ່ນ | RangeName ເປັນຂໍ້ຄວາມ | Long | ຈຳນວນແຖວ (>= 1) ໃນຊ່ວງທີ່ລະບຸ.
LastCell | ແມ່ນ | SheetName ຫຼື RangeName ເປັນຂໍ້ຄວາມ | String | ສົ່ງຄືນເຊວສຸດທ້າຍທີ່ມີການໃຊ້ງານໃນຊ່ວງ ຫຼື ແຜ່ນງານທີ່ລະບຸ.
LastColumn | ແມ່ນ | SheetName ຫຼື RangeName ເປັນຂໍ້ຄວາມ | Long | ຄໍລຳສຸດທ້າຍທີ່ມີການໃຊ້ງານໃນຊ່ວງ ຫຼື ແຜ່ນງານທີ່ລະບຸ.
LastRow | ແມ່ນ | SheetName ຫຼື RangeName ເປັນຂໍ້ຄວາມ | Long | ແຖວສຸດທ້າຍທີ່ມີການໃຊ້ງານໃນຊ່ວງ ຫຼື ແຜ່ນງານທີ່ລະບຸ.
Range | ແມ່ນ | RangeName ເປັນຂໍ້ຄວາມ | Object | ການອ້າງອີງຊ່ວງທີ່ສາມາດໃຊ້ເປັນອາກິວເມນຂອງເມທອດ ເຊັ່ນ CopyToRange.
Region | ແມ່ນ | RangeName ເປັນຂໍ້ຄວາມ | String | ສົ່ງຄືນທີ່ຢູ່ຂອງພື້ນທີ່ທີ່ນ້ອຍທີ່ສຸດເຊິ່ງກວມເອົາຊ່ວງທີ່ລະບຸ ໂດຍທີ່ພື້ນທີ່ນັ້ນຖືກລ້ອມຮອບດ້ວຍເຊວຫວ່າງ ຫຼື ຂອບຂອງແຜ່ນງານ. ສິ່ງນີ້ທຽບເທົ່າກັບການໃຊ້ທາງລັດ Command + *Ctrl + * ກັບຊ່ວງທີ່ລະບຸ.
Sheet | ແມ່ນ | SheetName ເປັນຂໍ້ຄວາມ | Object | ການອ້າງອີງແຜ່ນງານທີ່ສາມາດໃຊ້ເປັນອາກິວເມນຂອງເມທອດ ເຊັ່ນ CopySheet.
SheetName | ແມ່ນ | RangeName ເປັນຂໍ້ຄວາມ | String | ສົ່ງຄືນຊື່ແຜ່ນງານຂອງທີ່ຢູ່ຊ່ວງທີ່ລະບຸ.
Sheets | ແມ່ນ | ບໍ່ມີ | ອາເຣຂອງຂໍ້ຄວາມ | ລາຍການຊື່ຂອງແຜ່ນງານທີ່ມີຢູ່ທັງໝົດ.
Width | ແມ່ນ | RangeName ເປັນຂໍ້ຄວາມ | Long | ຈຳນວນຄໍລຳ (>= 1) ໃນຊ່ວງທີ່ລະບຸ.
XCellRange | ແມ່ນ | RangeName ເປັນຂໍ້ຄວາມ | Object | ວັດຖຸ UNO ປະເພດ com.sun.star.Table.XCellRange.
XSheetCellCursor | ແມ່ນ | RangeName ເປັນຂໍ້ຄວາມ | Object | ວັດຖຸ UNO ປະເພດ com.sun.star.sheet.XSheetCellCursor. ຫຼັງຈາກຍ້າຍເຄີເຊີແລ້ວ, ທີ່ຢູ່ຊ່ວງທີ່ໄດ້ຮັບສາມາດເຂົ້າເຖິງໄດ້ຜ່ານຄຸນສົມບັດ UNO AbsoluteName ຂອງວັດຖຸເຄີເຊີ, ເຊິ່ງຈະສົ່ງຄືນຄ່າເປັນຂໍ້ຄວາມທີ່ສາມາດໃຊ້ເປັນອາກິວເມນສຳລັບຄຸນສົມບັດ ແລະ ເມທອດຂອງບໍລິການ Calc.
XSpreadsheet | ແມ່ນ | SheetName ເປັນຂໍ້ຄວາມ | Object | ວັດຖຸ UNO ປະເພດ com.sun.star.sheet.XSpreadsheet.

ເຂົ້າເບິ່ງເວັບໄຊເອກະສານ API ຂອງ LibreOffice ເພື່ອຮຽນຮູ້ເພີ່ມເຕີມກ່ຽວກັບວັດຖຸ UNO XCellRange, XSheetCellCursor ແລະ XSpreadsheet.

## ເມທອດ

ລາຍການເມທອດໃນບໍລິການ Calc
A1Style Activate Charts ClearAll ClearFormats ClearValues CompactLeft CompactUp CopySheet CopySheetFromFile CopyToCell CopyToRange CreateChart CreatePivotTable DAvg DCount | DMax DMin DSum ExportRangeToFile Forms GetColumnName GetFormula GetValue ImportFromCSVFile ImportFromDatabase ImportStylesFromFile InsertSheet Intersect MoveRange MoveSheet Offset | OpenRangeSelector PrintOut Printf RemoveDuplicates RemoveSheet RenameSheet SetArray SetCellStyle SetFormula SetValue ShiftDown ShiftLeft ShiftRight ShiftUp SortRange

## A1Style

ສົ່ງຄືນທີ່ຢູ່ຂອງຊ່ວງເປັນຂໍ້ຄວາມໂດຍອີງຕາມພິກັດຂອງແຜ່ນງານ, ເຊັ່ນ ໝາຍເລກແຖວ ແລະ ຄໍລຳ.

ຫາກລະບຸພຽງແຕ່ພິກັດຄູ່ດຽວ, ຈະສົ່ງຄືນທີ່ຢູ່ຂອງເຊວດ່ຽວ. ອາກິວເມນເພີ່ມເຕີມສາມາດລະບຸເຊວລຸ່ມສຸດດ້ານຂວາຂອງຊ່ວງຮູບສີ່ແຈສາກໄດ້.

### ໄວຍາກອນ:

svc.A1Style(row1: int, column1: int, row2: int = 0; column2: int = 0; sheetname: str = "~"): str

### ພາຣາມິເຕີ:

row1, column1: ລະບຸໝາຍເລກແຖວ ແລະ ຄໍລຳຂອງເຊວເທິງສຸດດ້ານຊ້າຍໃນຊ່ວງທີ່ຕ້ອງການພິຈາລະນາ. ໝາຍເລກແຖວ ແລະ ຄໍລຳເລີ່ມຕົ້ນທີ່ 1.

row2, column2: ລະບຸໝາຍເລກແຖວ ແລະ ຄໍລຳຂອງເຊວລຸ່ມສຸດດ້ານຂວາໃນຊ່ວງທີ່ຕ້ອງການພິຈາລະນາ. ຖ້າບໍ່ໄດ້ລະບຸອາກິວເມນເຫຼົ່ານີ້, ຫຼື ຖ້າໃຫ້ຄ່າທີ່ນ້ອຍກວ່າ row1 ແລະ column1, ຈະສົ່ງຄືນທີ່ຢູ່ຂອງຊ່ວງເຊວດ່ຽວທີ່ແທນດ້ວຍ row1 ແລະ column1.

sheetname: ຊື່ຂອງແຜ່ນງານທີ່ຈະເພີ່ມໃສ່ທີ່ຢູ່ຂອງຊ່ວງທີ່ສົ່ງຄືນ. ແຜ່ນງານຕ້ອງມີຢູ່ຈິງ. ຄ່າເລີ່ມຕົ້ນແມ່ນ "~" ເຊິ່ງກົງກັບແຜ່ນງານທີ່ກຳລັງເຮັດວຽກຢູ່ປັດຈຸບັນ.

### ຕົວຢ່າງ:

ຕົວຢ່າງລຸ່ມນີ້ໃນ Basic ແລະ Python ຖືວ່າ "Sheet1" ແມ່ນແຜ່ນງານທີ່ກຳລັງເຮັດວຽກຢູ່ປັດຈຸບັນ.

##### ໃນ Basic

        Set oDoc = CreateScriptService("Calc")
        addr1 = oDoc.A1Style(1, 1) ' '$Sheet1'.$A$1
        addr2 = oDoc.A1Style(2, 2, 3, 6) ' '$Sheet1'.$B$2:$F$3
        addr3 = oDoc.A1Style(2, 2, 0, 6) ' '$Sheet1'.$B$2
        addr4 = oDoc.A1Style(3, 4, 3, 8, "Sheet2") ' '$Sheet2'.$D$3:$H$3
        addr5 = oDoc.A1Style(5, 1, SheetName := "Sheet3") ' '$Sheet3'.$A$5

##### ໃນ Python

        doc = CreateScriptService("Calc")
        addr1 = doc.A1Style(1, 1) # '$Sheet1'.$A$1
        addr2 = doc.A1Style(2, 2, 3, 6) # '$Sheet1'.$B$2:$F$3
        addr3 = doc.A1Style(2, 2, 0, 6) # '$Sheet1'.$B$2
        addr4 = doc.A1Style(3, 4, 3, 8, "Sheet2") # '$Sheet2'.$D$3:$H$3
        addr5 = doc.A1Style(5, 1, sheetname="Sheet3") # '$Sheet3'.$A$5

ເມທອດ A1Style ສາມາດໃຊ້ຮ່ວມກັບຫຼາຍຄຸນສົມບັດ ແລະ ເມທອດຂອງບໍລິການ Calc ທີ່ຕ້ອງການຊ່ວງເປັນອາກິວເມນ ເຊັ່ນ GetValue, GetFormula, ClearAll, ແລະ ອື່ນໆ.

## Activate

ຖ້າລະບຸອາກິວເມນ sheetname, ແຜ່ນງານນັ້ນຈະຖືກເປີດໃຊ້ງານ ແລະ ກາຍເປັນແຜ່ນງານທີ່ຖືກເລືອກໃນປັດຈຸບັນ. ຖ້າບໍ່ມີອາກິວເມນນີ້, ໜ້າຕ່າງເອກະສານຈະຖືກເປີດໃຊ້ງານແທນ.

### ໄວຍາກອນ:

svc.Activate(sheetname: str = ""): bool

### ພາຣາມິເຕີ:

sheetname: ຊື່ຂອງແຜ່ນງານທີ່ຈະເປີດໃຊ້ງານໃນເອກະສານ. ຄ່າເລີ່ມຕົ້ນແມ່ນຂໍ້ຄວາມຫວ່າງ, ໝາຍຄວາມວ່າໜ້າຕ່າງເອກະສານຈະຖືກເປີດໃຊ້ງານໂດຍບໍ່ມີການປ່ຽນແປງແຜ່ນງານທີ່ກຳລັງເຮັດວຽກຢູ່.

### ຕົວຢ່າງ:

ຕົວຢ່າງລຸ່ມນີ້ຈະເປີດໃຊ້ງານແຜ່ນງານທີ່ຊື່ວ່າ "Sheet4" ໃນເອກະສານທີ່ກຳລັງເຮັດວຽກຢູ່ປັດຈຸບັນ.

##### ໃນ Basic

        Dim ui as Variant, oDoc as Object
        Set ui = CreateScriptService("UI")
        Set oDoc = ui.GetDocument(ui.ActiveWindow)
        oDoc.Activate("Sheet4")

##### ໃນ Python

        ui = CreateScriptService("UI")
        myDoc = ui.GetDocument(ui.ActiveWindow)
        myDoc.Activate("Sheet4")

ການເປີດໃຊ້ງານແຜ່ນງານຈະມີຜົນກໍຕໍ່ເມື່ອປະຕິບັດກັບເອກະສານ Calc ເທົ່ານັ້ນ. ເພື່ອໃຫ້ແນ່ໃຈວ່າທ່ານກຳລັງໃຊ້ເອກະສານ Calc ຢູ່, ທ່ານສາມາດໃຊ້ຄຸນສົມບັດ isCalc ຂອງວັດຖຸເອກະສານ, ເຊິ່ງຈະສົ່ງຄືນຄ່າ True ຫາກເປັນເອກະສານ Calc ແລະ False ໃນກໍລະນີອື່ນ.

## Charts

ສົ່ງຄືນລາຍການຊື່ຂອງວັດຖຸແຜນພູມທັງໝົດໃນແຜ່ນງານທີ່ລະບຸ ຫຼື ສົ່ງຄືນອິນສະແຕນຊ໌ດ່ຽວຂອງບໍລິການ Chart.

- ຖ້າລະບຸພຽງແຕ່ sheetname, ຈະສົ່ງຄືນອາເຣຂອງຂໍ້ຄວາມ (ເລີ່ມຕົ້ນດ້ວຍ 0) ທີ່ບັນຈຸຊື່ຂອງແຜນພູມທັງໝົດ.

- ຖ້າລະບຸ chartname, ຈະສົ່ງຄືນວັດຖຸດ່ຽວທີ່ກົງກັບແຜນພູມທີ່ຕ້ອງການ. ແຜນພູມທີ່ລະບຸນັ້ນຕ້ອງມີຢູ່ຈິງ.

### ໄວຍາກອນ:

svc.Charts(sheetname: str, chartname: str = ""): obj

### ພາຣາມິເຕີ:

sheetname: ຊື່ຂອງແຜ່ນງານທີ່ຕ້ອງການດຶງລາຍການແຜນພູມ ຫຼື ບ່ອນທີ່ແຜນພູມທີ່ລະບຸນັ້ນຕັ້ງຢູ່.

chartname: ຊື່ທີ່ຜູ້ໃຊ້ກຳນົດເອງຂອງວັດຖຸແຜນພູມທີ່ຈະສົ່ງຄືນ. ຖ້າແຜນພູມບໍ່ມີຊື່ທີ່ຜູ້ໃຊ້ກຳນົດ, ສາມາດໃຊ້ຊື່ວັດຖຸພາຍໃນໄດ້. ຖ້າບໍ່ມີອາກິວເມນນີ້, ຈະສົ່ງຄືນລາຍການຊື່ແຜນພູມໃນແຜ່ນງານທີ່ລະບຸ.

ໃຊ້ແຖບຂ້າງ Navigator ເພື່ອກວດສອບຊື່ທີ່ກຳນົດໃຫ້ກັບແຜນພູມພາຍໃຕ້ໝວດໝູ່ OLE objects.

### ຕົວຢ່າງ:

##### ໃນ Basic

ຕົວຢ່າງລຸ່ມນີ້ສະແດງຈຳນວນວັດຖຸແຜນພູມໃນ "Sheet1".

        Dim arrNames as Object
        arrNames = oDoc.Charts("Sheet1")
        MsgBox "There are " & UBound(arrNames) + 1 & " charts in Sheet1"

ຕົວຢ່າງຕໍ່ໄປນີ້ຈະເຂົ້າເຖິງແຜນພູມທີ່ຊື່ວ່າ "MyChart" ໃນ "Sheet1" ແລະ ສະແດງປະເພດຂອງມັນ.

        Dim oChart as Object
        oChart = oDoc.Charts("Sheet1", "MyChart")
        MsgBox oChart.ChartType

##### ໃນ Python

        bas = CreateScriptService("Basic")
        chart_names = doc.Charts("Sheet1")
        bas.MsgBox(f"There are {len(chart_names)} charts in Sheet1")

        chart = doc.Charts("Sheet1", "MyChart")
        bas.MsgBox(chart.ChartType)

## ClearAll

ລຶບເນື້ອຫາ ແລະ ຮູບແບບທັງໝົດຂອງຊ່ວງທີ່ລະບຸ.

ສາມາດລະບຸສູດການກັ່ນຕອງເພື່ອ ກຳນົດວ່າເຊວໃດທີ່ຈະໄດ້ຮັບຜົນກະທົບ.

### ໄວຍາກອນ:

svc.ClearAll(range: str, opt filterformula: str, opt filterscope: str)

### ພາຣາມິເຕີ:

range: The range to be cleared, as a string.

filterformula: A Calc formula that shall be applied to the given range to determine which cells will be affected. The specified formula must return True or False. If this argument is not specified, then all cells in the range are affected.

filterscope: Determines how filterformula is expanded to the given range. This argument is mandatory if a filterformula is specified. The following values are accepted:

- "CELL": The formula specified in the filterformula argument is expanded once for each cell in range.

- "ROW": The formula specified in the filterformula argument is expanded once for each row in range.

- "COLUMN": The formula specified in the filterformula argument is expanded once for each column in range.

### ຕົວຢ່າງ:

##### ໃນ Basic

        ' ລຶບເຊວທັງໝົດໃນຊ່ວງ SheetX.A1:J10
        oDoc.ClearAll("SheetX.A1:J10")
        ' ລຶບເຊວທັງໝົດໃນຊ່ວງ SheetX.A1:J10 ທີ່ມີຄ່າຫຼາຍກວ່າ 100
        oDoc.ClearAll("SheetX.A1:J10", "=SheetX.A1>100", "CELL")
        ' ລຶບທຸກແຖວໃນຊ່ວງ SheetX.A1:J10 ທີ່ມີຜົນລວມຫຼາຍກວ່າ 500
        oDoc.ClearAll("SheetX.A1:J10", "=SUM(SheetX.A1:J1)>100", "ROW")
        ' ລຶບທຸກຄໍລຳໃນຊ່ວງ SheetX.A1:J10 ທີ່ມີຜົນລວມຫຼາຍກວ່າ 500
        oDoc.ClearAll("SheetX.A1:J10", "=SUM(SheetX.A1:A10)>100", "COLUMN")

##### ໃນ Python

        myDoc.ClearAll("SheetX.A1:F10")
        myDoc.ClearAll("SheetX.A1:J10", "=SheetX.A1>100", "CELL")
        myDoc.ClearAll("SheetX.A1:J10", "=SUM(SheetX.A1:J1)>100", "ROW")
        myDoc.ClearAll("SheetX.A1:J10", "=SUM(SheetX.A1:A10)>100", "COLUMN")

## ClearFormats

Clears the formats and styles in the given range.

ສາມາດລະບຸສູດການກັ່ນຕອງເພື່ອ ກຳນົດວ່າເຊວໃດທີ່ຈະໄດ້ຮັບຜົນກະທົບ.

### ໄວຍາກອນ:

svc.ClearFormats(range: str, opt filterformula: str, opt filterscope: str)

### ພາຣາມິເຕີ:

range: ຊ່ວງທີ່ຕ້ອງການລຶບຮູບແບບ ແລະ ສະໄຕລ໌, ໃນຮູບແບບຂໍ້ຄວາມ.

filterformula: A Calc formula that shall be applied to the given range to determine which cells will be affected. The specified formula must return True or False. If this argument is not specified, then all cells in the range are affected.

filterscope: Determines how filterformula is expanded to the given range. This argument is mandatory if a filterformula is specified. The following values are accepted:

- "CELL": The formula specified in the filterformula argument is expanded once for each cell in range.

- "ROW": The formula specified in the filterformula argument is expanded once for each row in range.

- "COLUMN": The formula specified in the filterformula argument is expanded once for each column in range.

### ຕົວຢ່າງ:

##### ໃນ Basic

          oDoc.ClearFormats("SheetX.*")

##### ໃນ Python

        myDoc.ClearFormats("SheetX.*")

ເບິ່ງເອກະສານຂອງເມທອດ ClearAll ສຳລັບຕົວຢ່າງການໃຊ້ອາກິວເມນ filterformula ແລະ filterscope.

## ClearValues

ລຶບຄ່າ ແລະ ສູດໃນຊ່ວງທີ່ລະບຸ.

ສາມາດລະບຸສູດການກັ່ນຕອງເພື່ອ ກຳນົດວ່າເຊວໃດທີ່ຈະໄດ້ຮັບຜົນກະທົບ.

### ໄວຍາກອນ:

svc.ClearValues(range: str, opt filterformula: str, opt filterscope: str)

### ພາຣາມິເຕີ:

range: ຊ່ວງທີ່ຕ້ອງການລຶບຄ່າ ແລະ ສູດ, ໃນຮູບແບບຂໍ້ຄວາມ.

filterformula: A Calc formula that shall be applied to the given range to determine which cells will be affected. The specified formula must return True or False. If this argument is not specified, then all cells in the range are affected.

filterscope: Determines how filterformula is expanded to the given range. This argument is mandatory if a filterformula is specified. The following values are accepted:

- "CELL": The formula specified in the filterformula argument is expanded once for each cell in range.

- "ROW": The formula specified in the filterformula argument is expanded once for each row in range.

- "COLUMN": The formula specified in the filterformula argument is expanded once for each column in range.

### ຕົວຢ່າງ:

##### ໃນ Basic

          oDoc.ClearValues("SheetX.A1:F10")

##### ໃນ Python

        myDoc.ClearValues("SheetX.A1:F10")

ເບິ່ງເອກະສານຂອງເມທອດ ClearAll ສຳລັບຕົວຢ່າງການໃຊ້ອາກິວເມນ filterformula ແລະ filterscope.

## CompactLeft

ລຶບຄໍລຳຂອງຊ່ວງທີ່ລະບຸ ທີ່ກົງກັບເງື່ອນໄຂການກັ່ນຕອງເຊິ່ງຂຽນເປັນສູດ Calc. ການກັ່ນຕອງຈະຖືກນຳໃຊ້ກັບແຕ່ລະຄໍລຳເພື່ອຕັດສິນໃຈວ່າຈະລຶບຫຼືບໍ່.

ຄໍລຳທີ່ຖືກລຶບສາມາດຈຳກັດຢູ່ທີ່ຄວາມສູງຂອງຊ່ວງທີ່ລະບຸ ຫຼື ຂະຫຍາຍໄປຕາມຄວາມສູງຂອງແຜ່ນງານທັງໝົດ, ເຊິ່ງຈະເປັນການລຶບຄໍລຳທັງໝົດ.

ເມທອດນີ້ສົ່ງຄືນຂໍ້ຄວາມທີ່ເປັນທີ່ຢູ່ຂອງຊ່ວງທີ່ຖືກບີບອັດແລ້ວ. ຖ້າຄໍລຳທັງໝົດຖືກລຶບ, ຈະສົ່ງຄືນຂໍ້ຄວາມຫວ່າງ.

ຫາກມີການເລືອກຊ່ວງຂອງເຊວໄວ້, ການເອີ້ນໃຊ້ເມທອດນີ້ຈະບໍ່ມີຜົນກະທົບຕໍ່ສິ່ງທີ່ເລືອກ.

### ໄວຍາກອນ:

svc.CompactLeft(range: str, wholecolumn: bool = False, opt filterformula: str): str

### ພາຣາມິເຕີ:

range: ຊ່ວງທີ່ຕ້ອງການລຶບຄໍລຳ, ໃນຮູບແບບຂໍ້ຄວາມ.

wholecolumn: ຖ້າກຳນົດຕົວເລືອກນີ້ເປັນ True, ຄໍລຳທັງໝົດຈະຖືກລຶບອອກຈາກແຜ່ນງານ. ຄ່າເລີ່ມຕົ້ນແມ່ນ False, ເຊິ່ງໝາຍຄວາມວ່າການລຶບຄໍລຳຈະຈຳກັດຢູ່ທີ່ຄວາມສູງຂອງ ຊ່ວງ ທີ່ລະບຸ.

filterformula: ເງື່ອນໄຂການກັ່ນຕອງທີ່ຈະໃຊ້ກັບແຕ່ລະຄໍລຳເພື່ອຕັດສິນໃຈວ່າຈະລຶບຫຼືບໍ່. ເງື່ອນໄຂນີ້ສະແດງອອກເປັນສູດ Calc ທີ່ຈະຖືກນຳໃຊ້ກັບຄໍລຳທຳອິດ. ເມື່ອສູດສົ່ງຄືນຄ່າ True ສຳລັບຄໍລຳໃດ, ຄໍລຳນັ້ນຈະຖືກລຶບ. ຄ່າເລີ່ມຕົ້ນຂອງການກັ່ນຕອງແມ່ນລຶບທຸກຄໍລຳທີ່ຫວ່າງ.

ຕົວຢ່າງ: ສົມມຸດວ່າເລືອກຊ່ວງ A1:J200 (ຄວາມສູງ = 200), ສູດເລີ່ມຕົ້ນແມ່ນ =(COUNTBLANK(A1:A200)=200). ນີ້ໝາຍຄວາມວ່າຖ້າທັງ 200 ເຊວໃນຄໍລຳທຳອິດ (ຄໍລຳ A) ຫວ່າງທັງໝົດ, ຄໍລຳນັ້ນຈະຖືກລຶບ. ໃຫ້ສັງເກດວ່າສູດຖືກຂຽນໂດຍອ້າງອີງໃສ່ຄໍລຳທຳອິດເທົ່ານັ້ນ. ພາຍໃນເມທອດ CompactLeft ຈະນຳໃຊ້ສູດນີ້ກັບທຸກຄໍລຳທີ່ເຫຼືອໂດຍອັດຕະໂນມັດ.

ຟັງຊັນ Calc ທີ່ໃຊ້ໃນອາກິວເມນ filterformula ຕ້ອງຂຽນເປັນຊື່ພາສາອັງກິດ. ເຂົ້າເບິ່ງໜ້າ Wiki List of Calc Functions ສຳລັບລາຍຊື່ຟັງຊັນ Calc ທັງໝົດໃນພາສາອັງກິດ.

### ຕົວຢ່າງ:

##### ໃນ Basic

        ' ລຶບຄໍລຳຫວ່າງທັງໝົດໃນຊ່ວງ G1:L10 ຈາກ Sheet1
        newrange = oDoc.CompactLeft("Sheet1.G1:L10")
        ' ຕົວຢ່າງລຸ່ມນີ້ຄ້າຍຄືກັນ, ແຕ່ຄໍລຳທັງໝົດຈະຖືກລຶບອອກຈາກແຜ່ນງານ
        newrange = oDoc.CompactLeft("Sheet1.G1:L10", WholeColumn := True)
        ' ລຶບທຸກຄໍລຳທີ່ແຖວທຳອິດຖືກໝາຍດ້ວຍ "X"
        newrange = oDoc.CompactLeft("Sheet1.G1:L10", FilterFormula := "=(G1=""X"")")
        ' ລຶບທຸກຄໍລຳທີ່ຜົນລວມຂອງຄ່າໃນຄໍລຳນັ້ນເປັນເລກຄີກ
        newrange = oDoc.CompactLeft("Sheet1.G1:L10", FilterFormula := "=(MOD(SUM(G1:G10);2)=1)")

##### ໃນ Python

        newrange = myDoc.CompactLeft("Sheet1.G1:L10")
        newrange = myDoc.CompactLeft("Sheet1.G1:L10", wholecolumn = True)
        newrange = myDoc.CompactLeft("Sheet1.G1:L10", filterformula = '=(G1="X")')
        newrange = myDoc.CompactLeft("Sheet1.G1:L10", filterformula = '=(MOD(SUM(G1:G10);2)=1)')

## CompactUp

ລຶບແຖວຂອງຊ່ວງທີ່ລະບຸ ທີ່ກົງກັບເງື່ອນໄຂການກັ່ນຕອງເຊິ່ງຂຽນເປັນສູດ Calc. ການກັ່ນຕອງຈະຖືກນຳໃຊ້ກັບແຕ່ລະແຖວເພື່ອຕັດສິນໃຈວ່າຈະລຶບຫຼືບໍ່.

ແຖວທີ່ຖືກລຶບສາມາດຈຳກັດຢູ່ທີ່ຄວາມກວ້າງຂອງຊ່ວງທີ່ລະບຸ ຫຼື ຂະຫຍາຍໄປຕາມຄວາມກວ້າງຂອງແຜ່ນງານທັງໝົດ, ເຊິ່ງຈະເປັນການລຶບແຖວທັງໝົດ.

ເມທອດນີ້ສົ່ງຄືນຂໍ້ຄວາມທີ່ເປັນທີ່ຢູ່ຂອງຊ່ວງທີ່ຖືກບີບອັດແລ້ວ. ຖ້າແຖວທັງໝົດຖືກລຶບ, ຈະສົ່ງຄືນຂໍ້ຄວາມຫວ່າງ.

ຫາກມີການເລືອກຊ່ວງຂອງເຊວໄວ້, ການເອີ້ນໃຊ້ເມທອດນີ້ຈະບໍ່ມີຜົນກະທົບຕໍ່ສິ່ງທີ່ເລືອກ.

### ໄວຍາກອນ:

svc.CompactUp(range: str, wholerow: bool = False, opt filterformula: str): str

### ພາຣາມິເຕີ:

range: ຊ່ວງທີ່ຕ້ອງການລຶບແຖວ, ໃນຮູບແບບຂໍ້ຄວາມ.

wholerow: ຖ້າກຳນົດຕົວເລືອກນີ້ເປັນ True, ແຖວທັງໝົດຈະຖືກລຶບອອກຈາກແຜ່ນງານ. ຄ່າເລີ່ມຕົ້ນແມ່ນ False, ເຊິ່ງໝາຍຄວາມວ່າການລຶບແຖວຈະຈຳກັດຢູ່ທີ່ຄວາມກວ້າງຂອງ ຊ່ວງ ທີ່ລະບຸ.

filterformula: ເງື່ອນໄຂການກັ່ນຕອງທີ່ຈະໃຊ້ກັບແຕ່ລະແຖວເພື່ອຕັດສິນໃຈວ່າຈະລຶບຫຼືບໍ່. ເງື່ອນໄຂນີ້ສະແດງອອກເປັນສູດ Calc ທີ່ຈະຖືກນຳໃຊ້ກັບແຖວທຳອິດ. ເມື່ອສູດສົ່ງຄືນຄ່າ True ສຳລັບແຖວໃດ, ແຖວນັ້ນຈະຖືກລຶບ. ຄ່າເລີ່ມຕົ້ນຂອງການກັ່ນຕອງແມ່ນລຶບທຸກແຖວທີ່ຫວ່າງ.

ຕົວຢ່າງ: ສົມມຸດວ່າເລືອກຊ່ວງ A1:J200 (ຄວາມກວ້າງ = 10), ສູດເລີ່ມຕົ້ນແມ່ນ =(COUNTBLANK(A1:J1)=10). ນີ້ໝາຍຄວາມວ່າຖ້າທັງ 10 ເຊວໃນແຖວທຳອິດ (ແຖວ 1) ຫວ່າງທັງໝົດ, ແຖວນັ້ນຈະຖືກລຶບ. ໃຫ້ສັງເກດວ່າສູດຖືກຂຽນໂດຍອ້າງອີງໃສ່ແຖວທຳອິດເທົ່ານັ້ນ. ພາຍໃນເມທອດ CompactUp ຈະນຳໃຊ້ສູດນີ້ກັບທຸກແຖວທີ່ເຫຼືອໂດຍອັດຕະໂນມັດ.

ຟັງຊັນ Calc ທີ່ໃຊ້ໃນສູດທີ່ລະບຸໃນອາກິວເມນ filterformula ຕ້ອງຂຽນເປັນຊື່ພາສາອັງກິດ. ເຂົ້າເບິ່ງໜ້າ Wiki List of Calc Functions ສຳລັບລາຍຊື່ຟັງຊັນ Calc ທັງໝົດໃນພາສາອັງກິດ.

### ຕົວຢ່າງ:

##### ໃນ Basic

        ' ລຶບແຖວຫວ່າງທັງໝົດໃນຊ່ວງ G1:L10 ຈາກ Sheet1
        newrange = oDoc.CompactUp("Sheet1.G1:L10")
        ' ຕົວຢ່າງລຸ່ມນີ້ຄ້າຍຄືກັນ, ແຕ່ແຖວທັງໝົດຈະຖືກລຶບອອກຈາກແຜ່ນງານ
        newrange = oDoc.CompactUp("Sheet1.G1:L10", WholeRow := True)
        ' ລຶບທຸກແຖວທີ່ຄໍລຳທຳອິດຖືກໝາຍດ້ວຍ "X"
        newrange = oDoc.CompactUp("Sheet1.G1:L10", FilterFormula := "=(G1=""X"")")
        ' ລຶບທຸກແຖວທີ່ຜົນລວມຂອງຄ່າໃນແຖວນັ້ນເປັນເລກຄີກ
        newrange = oDoc.CompactUp("Sheet1.G1:L10", FilterFormula := "=(MOD(SUM(G1:L1);2)=1)")

##### ໃນ Python

        newrange = myDoc.CompactUp("Sheet1.G1:L10")
        newrange = myDoc.CompactUp("Sheet1.G1:L10", wholerow = True)
        newrange = myDoc.CompactUp("Sheet1.G1:L10", filterformula = '=(G1="X")')
        newrange = myDoc.CompactUp("Sheet1.G1:L10", filterformula = '=(MOD(SUM(G1:L1);2)=1)')

## CopySheet

ສຳເນົາແຜ່ນງານທີ່ລະບຸໄປໄວ້ກ່ອນແຜ່ນງານທີ່ມີຢູ່ ຫຼື ໄວ້ທ້າຍສຸດຂອງລາຍການແຜ່ນງານ. ແຜ່ນງານທີ່ຈະສຳເນົາອາດຈະຢູ່ໃນເອກະສານ Calc ໃດກໍໄດ້ທີ່ ເປີດ ຢູ່. ສົ່ງຄືນ True ຫາກສຳເລັດ.

### ໄວຍາກອນ:

svc.CopySheet(sheetname: any, newname: str, [beforesheet: any]): bool

### ພາຣາມິເຕີ:

sheetname: ຊື່ຂອງແຜ່ນງານທີ່ຈະສຳເນົາ ໃນຮູບແບບຂໍ້ຄວາມ ຫຼື ການອ້າງອີງໃນຮູບແບບວັດຖຸ.

newname: ຊື່ຂອງແຜ່ນງານທີ່ຈະແຊກເຂົ້າ. ຊື່ນັ້ນຕ້ອງບໍ່ຊ້ຳກັບຊື່ທີ່ມີຢູ່ແລ້ວໃນເອກະສານ.

beforesheet: ຊື່ (ຂໍ້ຄວາມ) ຫຼື ອິນເດັກ (ຕົວເລກ, ເລີ່ມຕົ້ນທີ່ 1) ຂອງແຜ່ນງານທີ່ຕ້ອງການແຊກແຜ່ນງານທີ່ສຳເນົາໄວ້ທາງໜ້າ. ອາກິວເມນນີ້ເປັນທາງເລືອກ ແລະ ຄ່າເລີ່ມຕົ້ນແມ່ນການເພີ່ມແຜ່ນງານທີ່ສຳເນົາໄວ້ທີ່ຕຳແໜ່ງສຸດທ້າຍ.

### ຕົວຢ່າງ:

##### ໃນ Basic

ຕົວຢ່າງຕໍ່ໄປນີ້ຈະສ້າງສຳເນົາຂອງແຜ່ນງານ "SheetX" ແລະ ວາງມັນໄວ້ເປັນແຜ່ນງານສຸດທ້າຍໃນເອກະສານປັດຈຸບັນ. ຊື່ຂອງແຜ່ນງານທີ່ສຳເນົາແມ່ນ "SheetY".

        Dim oDoc as Object
        'ດຶງວັດຖຸ Document ຂອງໜ້າຕ່າງທີ່ກຳລັງເຮັດວຽກຢູ່
        Set oDoc = CreateScriptService("Calc")
        oDoc.CopySheet("SheetX", "SheetY")

ຕົວຢ່າງລຸ່ມນີ້ຈະສຳເນົາ "SheetX" ຈາກ "FileA.ods" ແລະ ວາງມັນໄວ້ທີ່ຕຳແໜ່ງສຸດທ້າຍຂອງ "FileB.ods" ໂດຍໃຊ້ຊື່ວ່າ "SheetY":

          Dim oDocA As Object : Set oDocA = ui.OpenDocument("C:\Documents\FileA.ods", Hidden := True, ReadOnly := True)
          Dim oDocB As Object : Set oDocB = ui.OpenDocument("C:\Documents\FileB.ods")
          oDocB.CopySheet(oDocA.Sheet("SheetX"), "SheetY")

##### ໃນ Python

        myDoc.CopySheet("SheetX", "SheetY")

        docA = ui.OpenDocument(r"C:\Documents\FileA.ods", hidden = True, readonly = True)
        docB = ui.OpenDocument(r"C:\Documents\FileB.ods")
        docB.CopySheet(docA.Sheet("SheetX"), "SheetY")

ເພື່ອສຳເນົາແຜ່ນງານລະຫວ່າງເອກະສານທີ່ ເປີດ ຢູ່, ໃຫ້ໃຊ້ CopySheet. ເພື່ອສຳເນົາແຜ່ນງານຈາກເອກະສານທີ່ ປິດ ຢູ່, ໃຫ້ໃຊ້ CopySheetFromFile.

## CopySheetFromFile

ສຳເນົາແຜ່ນງານທີ່ລະບຸຈາກເອກະສານ Calc ທີ່ ປິດ ຢູ່ ແລະ ວາງມັນໄວ້ກ່ອນແຜ່ນງານທີ່ມີຢູ່ ຫຼື ໄວ້ທ້າຍສຸດຂອງລາຍການແຜ່ນງານຂອງໄຟລ໌ທີ່ອ້າງອີງໂດຍວັດຖຸ Document.

ຖ້າໄຟລ໌ບໍ່ມີຢູ່, ຈະເກີດຂໍ້ຜິດພາດຂຶ້ນ. ຖ້າໄຟລ໌ບໍ່ແມ່ນໄຟລ໌ Calc ທີ່ຖືກຕ້ອງ, ແຜ່ນງານຫວ່າງຈະຖືກແຊກເຂົ້າ. ຖ້າແຜ່ນງານຕົ້ນທາງບໍ່ມີຢູ່ໃນໄຟລ໌ນຳເຂົ້າ, ຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດຈະຖືກແຊກໄວ້ທີ່ສ່ວນເທິງຂອງແຜ່ນງານທີ່ວາງໃໝ່.

### ໄວຍາກອນ:

svc.CopySheetFromFile(filename: str, sheetname: str, newname: str, [beforesheet: any]): bool

### ພາຣາມິເຕີ:

filename: ລະບຸໄຟລ໌ທີ່ຈະເປີດ. ຕ້ອງເປັນໄປຕາມຮູບແບບການຕັ້ງຊື່ໄຟລ໌ຂອງ SF_FileSystem.FileNaming. ໄຟລ໌ນັ້ນຕ້ອງບໍ່ມີການປ້ອງກັນດ້ວຍລະຫັດຜ່ານ.

sheetname: ຊື່ຂອງແຜ່ນງານທີ່ຈະສຳເນົາ ໃນຮູບແບບຂໍ້ຄວາມ.

newname: ຊື່ຂອງແຜ່ນງານທີ່ສຳເນົາທີ່ຈະແຊກເຂົ້າໃນເອກະສານ. ຊື່ນັ້ນຕ້ອງບໍ່ຊ້ຳກັບຊື່ທີ່ມີຢູ່ແລ້ວໃນເອກະສານ.

beforesheet: ຊື່ (ຂໍ້ຄວາມ) ຫຼື ອິນເດັກ (ຕົວເລກ, ເລີ່ມຕົ້ນທີ່ 1) ຂອງແຜ່ນງານທີ່ຕ້ອງການແຊກແຜ່ນງານທີ່ສຳເນົາໄວ້ທາງໜ້າ. ອາກິວເມນນີ້ເປັນທາງເລືອກ ແລະ ຄ່າເລີ່ມຕົ້ນແມ່ນການເພີ່ມແຜ່ນງານທີ່ສຳເນົາໄວ້ທີ່ຕຳແໜ່ງສຸດທ້າຍ.

### ຕົວຢ່າງ:

ຕົວຢ່າງຕໍ່ໄປນີ້ຈະສຳເນົາ "SheetX" ຈາກ "myFile.ods" ແລະ ວາງມັນລົງໃນເອກະສານທີ່ອ້າງອີງໂດຍ "oDoc" ໂດຍໃຊ້ຊື່ວ່າ "SheetY" ທີ່ຕຳແໜ່ງທຳອິດ.

##### ໃນ Basic

        oDoc.CopySheetFromFile("C:\Documents\myFile.ods", "SheetX", "SheetY", 1)

##### ໃນ Python

        myDoc.CopySheetFromFile(r"C:\Documents\myFile.ods", "SheetX", "SheetY", 1)

## CopyToCell

ສຳເນົາຊ່ວງຕົ້ນທາງທີ່ລະບຸ (ຄ່າ, ສູດ ແລະ ຮູບແບບ) ໄປຫາຊ່ວງ ຫຼື ເຊວປາຍທາງ. ເມທອດນີ້ຈະຮຽນແບບພຶດຕິກຳຂອງການຄັດລອກ/ວາງ ຈາກຊ່ວງໄປຫາເຊວດ່ຽວ.

ມັນຈະສົ່ງຄືນຂໍ້ຄວາມທີ່ແທນຊ່ວງຂອງເຊວທີ່ຖືກປ່ຽນແປງ. ຂະໜາດຂອງພື້ນທີ່ທີ່ຖືກປ່ຽນແປງຈະຖືກກຳນົດໂດຍຂະໜາດຂອງພື້ນທີ່ຕົ້ນທາງ.

ຊ່ວງຕົ້ນທາງອາດຈະເປັນຂອງເອກະສານອື່ນທີ່ ເປີດ ຢູ່.

### ໄວຍາກອນ:

svc.CopyToCell(sourcerange: any, destinationcell: str): str

### ພາຣາມິເຕີ:

sourcerange: ຊ່ວງຕົ້ນທາງໃນຮູບແບບຂໍ້ຄວາມເມື່ອມັນຢູ່ໃນເອກະສານດຽວກັນ ຫຼື ເປັນການອ້າງອີງເມື່ອມັນຢູ່ໃນເອກະສານ Calc ອື່ນທີ່ເປີດຢູ່.

destinationcell: ເຊວປາຍທາງທີ່ຈະວາງຊ່ວງຂອງເຊວທີ່ສຳເນົາໄວ້, ໃນຮູບແບບຂໍ້ຄວາມ. ຖ້າລະບຸເປັນຊ່ວງ, ຈະພິຈາລະນາສະເພາະເຊວເທິງສຸດດ້ານຊ້າຍເທົ່ານັ້ນ.

### ຕົວຢ່າງ:

##### ໃນ Basic

ຕໍ່ໄປນີ້ແມ່ນຕົວຢ່າງທີ່ຕົ້ນທາງ ແລະ ປາຍທາງຢູ່ໃນໄຟລ໌ດຽວກັນ:

          oDoc.CopyToCell("SheetX.A1:F10", "SheetY.C5")

ຕົວຢ່າງລຸ່ມນີ້ສະແດງວິທີການສຳເນົາຊ່ວງຈາກເອກະສານ Calc ອື່ນທີ່ເປີດຢູ່:

        Dim ui as Variant : ui = CreateScriptService("UI")
        Dim oDocSource As Object, oDocDestination As Object
        'ເປີດເອກະສານຕົ້ນທາງໄວ້ເບື້ອງຫຼັງ (ເຊື່ອງໄວ້)
        Set oDocSource = ui.OpenDocument("C:\SourceFile.ods", Hidden := True, ReadOnly := True)
        Set oDocDestination = CreateScriptService("Calc")
        oDocDestination.CopyToCell(oDocSource.Range("Sheet1.C2:C4"), "SheetT.A5")
        'ຢ່າລືມປິດເອກະສານຕົ້ນທາງ ເພາະມັນຖືກເປີດແບບເຊື່ອງໄວ້
        oDocSource.CloseDocument()

##### ໃນ Python

        docSource = ui.OpenDocument(r"C:\Documents\SourceFile.ods", hidden = True, readonly = True)
        docDestination = CreateScriptService("Calc")
        docDestination.CopyToCell(docSource.Range("Sheet1.C2:C4"), "SheetT.A5")
        docSource.CloseDocument()

ເພື່ອຈຳລອງການຄັດລອກ/ວາງ ຈາກຊ່ວງໄປຫາເຊວດ່ຽວ, ໃຫ້ໃຊ້ CopyToCell. ເພື່ອຈຳລອງການຄັດລອກ/ວາງ ຈາກຊ່ວງໄປຫາຊ່ວງທີ່ໃຫຍ່ກວ່າ (ໂດຍໃຫ້ເຊວເດີມຖືກເຮັດຊ້ຳຫຼາຍຄັ້ງ), ໃຫ້ໃຊ້ CopyToRange.

## CopyToRange

ສຳເນົາຊ່ວງຕົ້ນທາງທີ່ລະບຸ (ຄ່າ, ສູດ ແລະ ຮູບແບບ) ລົງລຸ່ມ ແລະ/ຫຼື ໄປທາງຂວາ ຫາຊ່ວງປາຍທາງ. ເມທອດນີ້ຈະຮຽນແບບພຶດຕິກຳຂອງການຄັດລອກ/ວາງ ຈາກຊ່ວງຕົ້ນທາງໄປຫາຊ່ວງປາຍທາງທີ່ໃຫຍ່ກວ່າ.

- ຖ້າຄວາມສູງ (ຫຼື ຄວາມກວ້າງ) ຂອງພື້ນທີ່ປາຍທາງ > 1 ແຖວ (ຫຼື ຄໍລຳ), ຄວາມສູງ (ຫຼື ຄວາມກວ້າງ) ຂອງຕົ້ນທາງຕ້ອງ <= ຄວາມສູງ (ຫຼື ຄວາມກວ້າງ) ຂອງປາຍທາງ. ຖ້າບໍ່ດັ່ງນັ້ນ ຈະບໍ່ມີຫຍັງເກີດຂຶ້ນ.

- ຖ້າຄວາມສູງ (ຫຼື ຄວາມກວ້າງ) ຂອງປາຍທາງ = 1, ປາຍທາງຈະຖືກຂະຫຍາຍລົງລຸ່ມ (ຫຼື ໄປທາງຂວາ) ຕາມຄວາມສູງ (ຫຼື ຄວາມກວ້າງ) ຂອງຊ່ວງຕົ້ນທາງ.

ເມທອດນີ້ສົ່ງຄືນຂໍ້ຄວາມທີ່ແທນຊ່ວງຂອງເຊວທີ່ຖືກປ່ຽນແປງ.

ຊ່ວງຕົ້ນທາງອາດຈະເປັນຂອງເອກະສານອື່ນທີ່ ເປີດ ຢູ່.

### ໄວຍາກອນ:

svc.CopyToRange(sourcerange: any, destinationrange: str): str

### ພາຣາມິເຕີ:

sourcerange: ຊ່ວງຕົ້ນທາງໃນຮູບແບບຂໍ້ຄວາມເມື່ອມັນຢູ່ໃນເອກະສານດຽວກັນ ຫຼື ເປັນການອ້າງອີງເມື່ອມັນຢູ່ໃນເອກະສານ Calc ອື່ນທີ່ເປີດຢູ່.

destinationrange: ປາຍທາງຂອງຊ່ວງເຊວທີ່ສຳເນົາໄວ້, ໃນຮູບແບບຂໍ້ຄວາມ.

### ຕົວຢ່າງ:

##### ໃນ Basic

ສຳເນົາພາຍໃນເອກະສານດຽວກັນ:

        oDoc.CopyToRange("SheetX.A1:F10", "SheetY.C5:J5")
        ' ສົ່ງຄືນຂໍ້ຄວາມຂອງຊ່ວງ: "$SheetY.$C$5:$J$14"

ສຳເນົາຈາກໄຟລ໌ໜຶ່ງໄປຫາອີກໄຟລ໌ໜຶ່ງ:

        Dim oDocA As Object : Set oDocA = ui.OpenDocument("C:\Documents\FileA.ods", Hidden := True, ReadOnly := True)
        Dim oDocB As Object : Set oDocB = ui.OpenDocument("C:\Documents\FileB.ods")
        oDocB.CopyToRange(oDocA.Range("SheetX.A1:F10"), "SheetY.C5:J5")

##### ໃນ Python

        doc.CopyToRange("SheetX.A1:F10", "SheetY.C5:J5")

        docA = ui.OpenDocument(r"C:\Documents\FileA.ods", hidden = True, readonly = True)
        docB = ui.OpenDocument(r"C:\Documents\FileB.ods")
        docB.CopyToRange(docA.Range("SheetX.A1:F10"), "SheetY.C5:J5")

## CreateChart

ສ້າງວັດຖຸແຜນພູມໃໝ່ທີ່ສະແດງຂໍ້ມູນໃນຊ່ວງທີ່ລະບຸ. ວັດຖຸແຜນພູມທີ່ສົ່ງຄືນສາມາດນຳໄປຈັດການຕໍ່ໄດ້ໂດຍໃຊ້ບໍລິການ Chart.

### ໄວຍາກອນ:

svc.CreateChart(chartname: str, sheetname: str, range: str, columnheader: bool = False, rowheader: bool = False): obj

### ພາຣາມິເຕີ:

chartname: The user-defined name of the chart to be created. The name must be unique in the same sheet.

sheetname: The name of the sheet where the chart will be placed.

range: The range to be used as the data source for the chart. The range may refer to any sheet of the Calc document.

columnheader: When True, the topmost row of the range is used as labels for the category axis or the legend (Default = False).

rowheader: When True, the leftmost column of the range is used as labels for the category axis or the legend. (Default = False).

### ຕົວຢ່າງ:

ຕົວຢ່າງລຸ່ມນີ້ໃນ Basic ແລະ Python ຈະສ້າງແຜນພູມໂດຍໃຊ້ຂໍ້ມູນໃນຊ່ວງ "A1:B5" ຂອງ "Sheet1" ແລະ ວາງແຜນພູມໄວ້ໃນ "Sheet2".

##### ໃນ Basic

        Set oChart = oDoc.CreateChart("MyChart", "Sheet2", "Sheet1.A1:B5", RowHeader := True)
        oChart.ChartType = "Donut"

##### ໃນ Python

        chart = doc.CreateChart("MyChart", "Sheet2", "Sheet1.A1:B5", rowheader=True)
        chart.ChartType = "Donut"

ເບິ່ງໜ້າຊ່ວຍເຫຼືອກ່ຽວກັບ ບໍລິການ Chart ຂອງ ScriptForge ເພື່ອຮຽນຮູ້ເພີ່ມເຕີມກ່ຽວກັບວິທີການຈັດການວັດຖຸແຜນພູມ. ທ່ານສາມາດປ່ຽນຄຸນສົມບັດຕ່າງໆ ເຊັ່ນ ປະເພດແຜນພູມ, ຊື່ແຜນພູມ ແລະ ແກນ, ລວມທັງຕຳແໜ່ງຂອງແຜນພູມ.

## CreatePivotTable

ສ້າງຕາຕະລາງພິວອດ (pivot table) ໃໝ່ ດ້ວຍຄຸນສົມບັດທີ່ກຳນົດໂດຍອາກິວເມນທີ່ສົ່ງໃຫ້ເມທອດ.

ຕ້ອງລະບຸຊື່ສຳລັບຕາຕະລາງພິວອດ. ຖ້າມີຕາຕະລາງພິວອດທີ່ໃຊ້ຊື່ດຽວກັນນີ້ຢູ່ແລ້ວໃນແຜ່ນງານເປົ້າໝາຍ, ມັນຈະຖືກແທນທີ່ໂດຍບໍ່ມີການແຈ້ງເຕືອນ.

ເມທອດນີ້ສົ່ງຄືນຂໍ້ຄວາມທີ່ບັນຈຸຊ່ວງທີ່ຕາຕະລາງພິວອດໃໝ່ຖືກວາງໄວ້.

### ໄວຍາກອນ:

svc.CreatePivotTable(pivottablename: str, sourcerange: str, targetcell: str, datafields: str[0..*], rowfields: str[0..*], columnfields: str[0..*], filterbutton: bool = true, rowtotals: bool = true, columntotals: bool = true): str

### ພາຣາມິເຕີ:

pivottablename: ຊື່ທີ່ຜູ້ໃຊ້ກຳນົດເອງຂອງຕາຕະລາງພິວອດໃໝ່.

sourcerange: The range containing the raw data, as a string. It is assumed that the first row contains the field names that are used by the pivot table.

targetcell: The top-left cell where the new pivot table will be placed. If a range is specified, only its top-left cell is considered.

datafields: It can be either a single string or an array containing strings that define field names and functions to be applied. When an array is specified, it must follow the syntax Array("FieldName[;Function]", ...).

ຟັງຊັນທີ່ອະນຸຍາດຄື: Sum, Count, Average, Max, Min, Product, CountNums, StDev, StDevP, Var, VarP ແລະ Median. ຊື່ຟັງຊັນຕ້ອງລະບຸເປັນພາສາອັງກິດ. ເມື່ອຄ່າທັງໝົດເປັນຕົວເລກ, Sum ຈະເປັນຟັງຊັນເລີ່ມຕົ້ນ, ຖ້າບໍ່ດັ່ງນັ້ນ ຟັງຊັນເລີ່ມຕົ້ນຈະແມ່ນ Count.

rowfields: A single string or an array with the field names that will be used as the pivot table rows.

columnfields: A single string or an array with the field names that will be used as the pivot table columns.

filterbutton: Determines whether a filter button will be displayed above the pivot table (Default = True).

rowtotals: Specifies if a separate column for row totals will be added to the pivot table (Default = True).

columntotals Specifies if a separate row for column totals will be added to the pivot table (Default = True)

### ຕົວຢ່າງ:

##### ໃນ Basic

        Dim vData As Variant, oDoc As Object, ui As Object, sTable As String, sPivot As String
        Set ui = CreateScriptService("UI")
        Set oDoc = ui.CreateDocument("Calc")
        vData = Array(Array("Item", "State", "Team", "2002", "2003", "2004"), _
            Array("Books", "Michigan", "Jean", 14788, 30222, 23490), _
            Array("Candy", "Michigan", "Jean", 26388, 15641, 32849), _
            Array("Pens", "Michigan", "Jean", 16569, 32675, 25396), _
            Array("Books", "Michigan", "Volker", 21961, 21242, 29009), _
            Array("Candy", "Michigan", "Volker", 26142, 22407, 32841))
        sTable = oDoc.SetArray("A1", vData)
        sPivot = oDoc.CreatePivotTable("PT1", sTable, "H1", _
            Array("2002", "2003;count", "2004;average"), _ ' ສາມຟີວຂໍ້ມູນ
            "Item", _ ' ຟີວແຖວດ່ຽວ
            Array("State", "Team"), False) ' ສອງຟີວຄໍລຳ

##### ໃນ Python

        ui = CreateScriptService("UI")
        doc = ui.CreateDocument("Calc")
        vData = [["Item", "State", "Team", "2002", "2003", "2004"],
                 ["Books", "Michigan", "Jean", 14788, 30222, 23490],
                 ["Candy", "Michigan", "Jean", 26388, 15641, 32849],
                 ["Pens", "Michigan", "Jean", 16569, 32675, 25396)],
                 ["Books", "Michigan", "Volker", 21961, 21242, 29009],
                 ["Candy", "Michigan", "Volker", 26142, 22407, 32841]]
        sTable = doc.SetArray("A1", vData)
        sPivot = doc.CreatePivotTable("PT1", sTable, "H1",
                                      ["2002", "2003;count", "2004;average"],
                                      "Item",
                                      ["State", "Team"], False)

ເພື່ອຮຽນຮູ້ເພີ່ມເຕີມກ່ຽວກັບຕາຕະລາງພິວອດໃນ LibreOffice Calc, ກະລຸນາອ່ານໜ້າຊ່ວຍເຫຼືອ Pivot Table.

## DAvg, DCount, DMax, DMin and DSum

ນຳໃຊ້ຟັງຊັນ Average, Count, Max, Min ແລະ Sum ຕາມລຳດັບ ກັບທຸກເຊວທີ່ມີຄ່າຕົວເລກໃນຊ່ວງທີ່ລະບຸ, ໂດຍບໍ່ລວມຄ່າຈາກແຖວທີ່ຖືກກັ່ນຕອງ ແລະ ຖືກເຊື່ອງໄວ້ ລວມທັງຄໍລຳທີ່ຖືກເຊື່ອງ, ຄືກັນກັບຟັງຊັນໃນແຖບສະຖານະ (status bar).

### ໄວຍາກອນ:

svc.DAvg(range: str): float

svc.DCount(range: str): float

svc.DMax(range: str): float

svc.DMin(range: str): float

svc.DSum(range: str): float

### ພາຣາມິເຕີ:

range: ຊ່ວງທີ່ຈະນຳໃຊ້ຟັງຊັນ, ໃນຮູບແບບຂໍ້ຄວາມ.

### ຕົວຢ່າງ:

ຕົວຢ່າງລຸ່ມນີ້ຈະນຳໃຊ້ຟັງຊັນ Sum ກັບຊ່ວງ "A1:A1000" ຂອງແຜ່ນງານທີ່ຖືກເລືອກໃນປັດຈຸບັນ:

##### ໃນ Basic

          result = oDoc.DSum("~.A1:A1000")

##### ໃນ Python

        result = myDoc.DSum("~.A1:A1000")

ເຊວໃນຊ່ວງທີ່ລະບຸທີ່ມີຂໍ້ຄວາມຈະຖືກລະເລີຍໂດຍຟັງຊັນທັງໝົດເຫຼົ່ານີ້. ຕົວຢ່າງ: ເມທອດ DCount ຈະບໍ່ນັບເຊວທີ່ມີຂໍ້ຄວາມ, ແຕ່ຈະນັບສະເພາະເຊວຕົວເລກເທົ່ານັ້ນ.

## ExportRangeToFile

ສົ່ງອອກຊ່ວງທີ່ລະບຸເປັນຮູບພາບ ຫຼື ໄຟລ໌ PDF.

ເມທອດນີ້ສົ່ງຄືນ True ຫາກບັນທຶກໄຟລ໌ປາຍທາງສຳເລັດ.

ແຖວ ຫຼື ຄໍລຳທີ່ຖືກເຊື່ອງໄວ້ໃນຊ່ວງທີ່ລະບຸ ຈະບໍ່ຖືກສົ່ງອອກໄປຫາໄຟລ໌ປາຍທາງ.

### ໄວຍາກອນ:

svc.ExportRangeToFile(range: str, filename: str, imagetype: str = "pdf", overwrite: bool = False): bool

### ພາຣາມິເຕີ:

range: ຊື່ແຜ່ນງານ ຫຼື ຊ່ວງເຊວທີ່ຈະສົ່ງອອກ, ໃນຮູບແບບຂໍ້ຄວາມ.

filename: ຊື່ຂອງໄຟລ໌ທີ່ຈະບັນທຶກ. ຕ້ອງເປັນໄປຕາມຮູບແບບການຕັ້ງຊື່ໄຟລ໌ຂອງ SF_FileSystem.FileNaming.

imagetype: ລະບຸປະເພດໄຟລ໌ປາຍທາງ. ຄ່າທີ່ເປັນໄປໄດ້ຄື "jpeg", "pdf" (ເລີ່ມຕົ້ນ) ແລະ "png".

overwrite: ເມື່ອກຳນົດເປັນ True, ໄຟລ໌ປາຍທາງອາດຈະຖືກຂຽນທັບ (ຄ່າເລີ່ມຕົ້ນ = False).

### ຕົວຢ່າງ:

##### ໃນ Basic

        ' ສົ່ງອອກແຜ່ນງານທັງໝົດເປັນໄຟລ໌ PDF
        oDoc.ExportRangeToFile("SheetX", "C:\Temp\image.pdf")
        ' ສົ່ງອອກຊ່ວງເປັນໄຟລ໌ PNG ແລະ ຂຽນທັບໄຟລ໌ປາຍທາງຫາກມັນມີຢູ່ແລ້ວ
        oDoc.ExportRangeToFile("SheetX.A1:D10", "C:\Temp\image.png", "png", Overwrite := True)

##### ໃນ Python

        doc.ExportRangeToFile("SheetX", r"C:\Temp\image.pdf")
        doc.ExportRangeToFile("SheetX.A1:D10", r"C:\Temp\image.png", "png", overwrite = True)

## Forms

ຂຶ້ນກັບພາລາມິເຕີທີ່ລະບຸ, ເມທອດນີ້ຈະສົ່ງຄືນ:

- ອາເຣທີ່ເລີ່ມຕົ້ນດ້ວຍສູນ (ຫຼື tuple ໃນ Python) ທີ່ບັນຈຸຊື່ຂອງຟອມທັງໝົດໃນແຜ່ນງານທີ່ລະບຸ (ຖ້າບໍ່ມີອາກິວເມນ form)

- ອິນສະແຕນຊ໌ຂອງບໍລິການ SFDocuments.Form ທີ່ແທນຟອມທີ່ລະບຸເປັນອາກິວເມນ.

### ໄວຍາກອນ:

svc.Forms(sheetname: str): str[0..*]

svc.Forms(sheetname: str, form: str = ''): svc

svc.Forms(sheetname: str, form: int): svc

### ພາຣາມິເຕີ:

sheetname: ຊື່ຂອງແຜ່ນງານ, ໃນຮູບແບບຂໍ້ຄວາມ, ບ່ອນທີ່ຕ້ອງການດຶງຟອມ.

form: ຊື່ ຫຼື ອິນເດັກທີ່ກົງກັບຟອມທີ່ເກັບໄວ້ໃນແຜ່ນງານທີ່ລະບຸ. ຖ້າບໍ່ມີອາກິວເມນນີ້, ເມທອດຈະສົ່ງຄືນລາຍການຊື່ຂອງຟອມທັງໝົດທີ່ມີຢູ່ໃນແຜ່ນງານ.

### ຕົວຢ່າງ:

ໃນຕົວຢ່າງຕໍ່ໄປນີ້, ແຖວທຳອິດຈະດຶງຊື່ຂອງຟອມທັງໝົດທີ່ເກັບໄວ້ໃນ "Sheet1" ແລະ ແຖວທີສອງຈະດຶງວັດຖຸ Form ຂອງຟອມທີ່ຊື່ວ່າ "Form_A" ເຊິ່ງເກັບໄວ້ໃນ "Sheet1".

##### ໃນ Basic

        Set FormNames = oDoc.Forms("Sheet1")
        Set FormA = oDoc.Forms("Sheet1", "Form_A")

##### ໃນ Python

        form_names = doc.Forms("Sheet1")
        form_A = doc.Forms("Sheet1", "Form_A")

## GetColumnName

ແປງໝາຍເລກຄໍລຳທີ່ມີຄ່າລະຫວ່າງ 1 ຫາ 1024 ໃຫ້ເປັນຕົວອັກສອນທີ່ກົງກັນ (ຄໍລຳ 'A', 'B', ..., 'AMJ'). ຖ້າໝາຍເລກຄໍລຳທີ່ໃຫ້ຢູ່ຢູ່ນອກຂອບເຂດທີ່ອະນຸຍາດ, ຈະສົ່ງຄືນຂໍ້ຄວາມຫວ່າງ.

### ໄວຍາກອນ:

svc.GetColumnName(columnnumber: int): str

### ພາຣາມິເຕີ:

columnnumber: ໝາຍເລກຄໍລຳເປັນຕົວເລກຖ້ວນໃນຊ່ວງ 1 ... 16384.

### ຕົວຢ່າງ:

##### ໃນ Basic

ສະແດງກ່ອງຂໍ້ຄວາມທີ່ມີຊື່ຂອງຄໍລຳທີສາມ, ເຊິ່ງໂດຍຄ່າເລີ່ມຕົ້ນແມ່ນ "C".

        MsgBox oDoc.GetColumnName(3)

##### ໃນ Python

        bas = CreateScriptService("Basic")
        bas.MsgBox(myDoc.GetColumnName(3))

ຈຳນວນຄໍລຳສູງສຸດທີ່ອະນຸຍາດໃນແຜ່ນງານ Calc ແມ່ນ 16384.

## GetFormula

ດຶງສູດທີ່ເກັບໄວ້ໃນຊ່ວງເຊວທີ່ລະບຸ ເປັນຂໍ້ຄວາມດ່ຽວ, ອາເຣ 1 ມິຕິ ຫຼື 2 ມິຕິຂອງຂໍ້ຄວາມ.

ຊື່ຂອງຟັງຊັນ Calc ທີ່ໃຊ້ໃນສູດທີ່ສົ່ງຄືນຈະສະແດງເປັນພາສາອັງກິດ. ເຂົ້າເບິ່ງໜ້າ Wiki List of Calc Functions ສຳລັບລາຍຊື່ຟັງຊັນ Calc ທັງໝົດໃນພາສາອັງກິດ.

### ໄວຍາກອນ:

svc.GetFormula(range: str): any

### ພາຣາມິເຕີ:

range: ຊ່ວງທີ່ຕ້ອງການດຶງສູດອອກມາ, ໃນຮູບແບບຂໍ້ຄວາມ.

### ຕົວຢ່າງ:

##### ໃນ Basic

ຕົວຢ່າງຕໍ່ໄປນີ້ຈະສົ່ງຄືນອາເຣຂະໜາດ 3 ຄູນ 2 ທີ່ມີສູດໃນຊ່ວງ "A1:B3" (3 ແຖວ ຄູນ 2 ຄໍລຳ):

        arrFormula = oDoc.GetFormula("~.A1:B3")

##### ໃນ Python

        arrFormula = myDoc.GetFormula("~.A1:B3")

## GetValue

ດຶງຄ່າທີ່ເກັບໄວ້ໃນຊ່ວງເຊວທີ່ລະບຸ ເປັນຄ່າດ່ຽວ, ອາເຣ 1 ມິຕິ ຫຼື 2 ມິຕິ. ຄ່າທັງໝົດຈະເປັນທັງຕົວເລກທົດສະນິຍົມ (double) ຫຼື ຂໍ້ຄວາມ.

### ໄວຍາກອນ:

svc.GetValue(range: str): any

### ພາຣາມິເຕີ:

range: ຊ່ວງທີ່ຕ້ອງການດຶງຄ່າອອກມາ, ໃນຮູບແບບຂໍ້ຄວາມ.

### ຕົວຢ່າງ:

##### ໃນ Basic

          arrValues = oDoc.GetValue("~.B1:C100")

##### ໃນ Python

        arrValues = myDoc.GetValue("~.B1:C100")

ຖ້າເຊວບັນຈຸວັນທີ, ຈະສົ່ງຄືນຕົວເລກທີ່ກົງກັບວັນທີນັ້ນ. ເພື່ອແປງຄ່າຕົວເລກເປັນວັນທີໃນສະຄຣິບ Basic, ໃຫ້ໃຊ້ ຟັງຊັນ CDate ທີ່ມີມາພ້ອມກັບ Basic. ໃນສະຄຣິບ Python, ໃຫ້ໃຊ້ ຟັງຊັນ CDate ຈາກບໍລິການ Basic.

## ImportFromCSVFile

ນຳເຂົ້າເນື້ອຫາຂອງໄຟລ໌ຂໍ້ຄວາມຮູບແບບ CSV ແລະ ວາງມັນລົງໃນເຊວປາຍທາງທີ່ລະບຸ.

ພື້ນທີ່ປາຍທາງຈະຖືກລຶບເນື້ອຫາ ແລະ ຮູບແບບທັງໝົດກ່ອນທີ່ຈະແຊກເນື້ອຫາຂອງໄຟລ໌ CSV. ຂະໜາດຂອງພື້ນທີ່ທີ່ຖືກປ່ຽນແປງຈະຖືກກຳນົດໂດຍເນື້ອຫາຂອງໄຟລ໌ນຳເຂົ້າ.

ເມທອດນີ້ສົ່ງຄືນຂໍ້ຄວາມທີ່ແທນຊ່ວງຂອງເຊວທີ່ຖືກປ່ຽນແປງ.

### ໄວຍາກອນ:

svc.ImportFromCSVFile(filename: str, destinationcell: str, [filteroptions: str]): str

### ພາຣາມິເຕີ:

filename: ລະບຸໄຟລ໌ທີ່ຈະເປີດ. ຕ້ອງເປັນໄປຕາມຮູບແບບການຕັ້ງຊື່ໄຟລ໌ຂອງ SF_FileSystem.FileNaming.

destinationcell: ເເຊວປາຍທາງທີ່ຈະແຊກຂໍ້ມູນທີ່ນຳເຂົ້າ, ໃນຮູບແບບຂໍ້ຄວາມ. ຖ້າລະບຸເປັນຊ່ວງ, ຈະພິຈາລະນາສະເພາະເຊວເທິງສຸດດ້ານຊ້າຍເທົ່ານັ້ນ.

filteroptions: ອາກິວເມນສຳລັບຕົວຊ່ວຍນຳເຂົ້າ CSV. ຕົວຊ່ວຍນຳເຂົ້າເລີ່ມຕົ້ນຈະຕັ້ງຄ່າດັ່ງນີ້:

- ລະຫັດຂອງໄຟລ໌ນຳເຂົ້າແມ່ນ UTF8.

- ຕົວແຍກຟີວແມ່ນ ເຄື່ອງໝາຍຈຸດ, ເຄື່ອງໝາຍຈ້ຳຈຸດ ຫຼື ແຖບ (Tab).

- ຕົວຂັ້ນຂໍ້ຄວາມແມ່ນ ເຄື່ອງໝາຍອັດຕະພາກຄູ່ (").

- ລວມເອົາທຸກແຖວ.

- ຂໍ້ຄວາມທີ່ຢູ່ໃນເຄື່ອງໝາຍຄຳເວົ້າຈະຖືກຈັດຮູບແບບເປັນຂໍ້ຄວາມ.

- ມີການກວດຫາຕົວເລກຮູບແບບພິເສດ.

- ທຸກຄໍລຳຈະຖືກຖືວ່າເປັນຂໍ້ຄວາມ, ຍົກເວັ້ນຄໍລຳທີ່ຖືກກວດພົບວ່າເປັນຕົວເລກທີ່ຖືກຕ້ອງ.

- ພາສາແມ່ນ ພາສາອັງກິດ/ສະຫະລັດ, ເຊິ່ງໝາຍຄວາມວ່າຕົວແຍກທົດສະນິຍົມແມ່ນ "." ແລະ ຕົວແຍກຫຼັກພັນແມ່ນ ",".

### ຕົວຢ່າງ:

##### ໃນ Basic

        oDoc.ImportFromCSVFile("C:\Temp\myCSVFile.csv", "SheetY.C5")

##### ໃນ Python

        myDoc.ImportFromCSVFile(r"C:\Temp\myCSVFile.csv", "SheetY.C5")

ເພື່ອຮຽນຮູ້ເພີ່ມເຕີມກ່ຽວກັບຕົວເລືອກຕົວຊ່ວຍນຳເຂົ້າ CSV, ກະລຸນາເບິ່ງທີ່ ໜ້າຊ່ວຍເຫຼືອຕົວເລືອກຕົວຊ່ວຍນຳເຂົ້າ CSV.

## ImportFromDatabase

ນຳເຂົ້າເນື້ອຫາຂອງຕາຕະລາງຖານຂໍ້ມູນ, ຄຳຖາມ (query) ຫຼື ຊຸດຜົນລັດ, ເຊັ່ນ ຜົນລັດຈາກຄຳສັ່ງ SELECT SQL, ໂດຍແຊກລົງໃນເຊວປາຍທາງ.

ພື້ນທີ່ປາຍທາງຈະຖືກລຶບເນື້ອໃນ ແລະ ຮູບແບບທັງໝົດອອກກ່ອນທີ່ຈະແຊກເນື້ອໃນທີ່ນຳເຂົ້າມາ. ຂະໜາດຂອງພື້ນທີ່ທີ່ຖືກປັບປ່ຽນແມ່ນຂຶ້ນກັບເນື້ອໃນໃນຕາຕະລາງ ຫຼື ຄຳສັ່ງສອບຖາມທັງໝົດ.

ເມທອດນີ້ສົ່ງຄືນ True ເມື່ອການນຳເຂົ້າສຳເລັດ.

### ໄວຍາກອນ:

svc.ImportFromDatabase(filename: str = "", registrationname: str = "", destinationcell: str = "", sqlcommand: str = "", directsql: bool): bool

### ພາຣາມິເຕີ:

filename: ລະບຸໄຟລ໌ທີ່ຈະເປີດ. ມັນຕ້ອງເປັນໄປຕາມຮູບແບບ SF_FileSystem.FileNaming.

registrationname: ຊື່ທີ່ໃຊ້ໃນການຄົ້ນຫາຖານຂໍ້ມູນໃນທະບຽນຖານຂໍ້ມູນ. ອາກິວເມນນີ້ຈະຖືກລະເລີຍຫາກມີການລະບຸ filename.

destinationcell: ປາຍທາງຂອງຂໍ້ມູນທີ່ນຳເຂົ້າ, ໃນຮູບແບບຂໍ້ຄວາມ. ຫາກກຳນົດເປັນໄລຍະຂໍ້ມູນ, ຈະພິຈາລະນາສະເພາະຫ້ອງເທິງຊ້າຍສຸດເທົ່ານັ້ນ.

sqlcommand: ຊື່ຕາຕະລາງ ຫຼື ຄຳສັ່ງສອບຖາມ (ໂດຍບໍ່ມີເຄື່ອງໝາຍຄຳເວົ້າ ຫຼື ວົງເລັບກ້າມປູອ້ອມຮອບ) ຫຼື ຄຳສັ່ງ SELECT SQL ເຊິ່ງຊື່ຕາຕະລາງ ແລະ ຊື່ຟິວອາດຈະຖືກອ້ອມຮອບດ້ວຍວົງເລັບກ້າມປູ ຫຼື ເຄື່ອງໝາຍຄຳເວົ້າເພື່ອໃຫ້ອ່ານງ່າຍຂຶ້ນ.

directsql: ເມື່ອເປັນ True, ຄຳສັ່ງ SQL ຈະຖືກສົ່ງໄປຫາເຄື່ອງຈັກຖານຂໍ້ມູນໂດຍກົງໂດຍບໍ່ມີການວິເຄາະກ່ອນ. ຄ່າເລີ່ມຕົ້ນແມ່ນ False. ອາຄິວເມນນີ້ຈະຖືກລະເວັ້ນສຳລັບຕາຕະລາງ. ສຳລັບການສອບຖາມ, ຕົວເລືອກທີ່ໃຊ້ແມ່ນຕົວເລືອກທີ່ຕັ້ງໄວ້ຕອນກຳນົດການສອບຖາມ.

### ຕົວຢ່າງ:

##### ໃນ Basic

        oDoc.ImportFromDatabase("C:\Temp\myDbFile.odb", , "SheetY.C5", "SELECT * FROM [Employees] ORDER BY [LastName]")

##### ໃນ Python

        myDoc.ImportFromDatabase(r"C:\Temp\myDbFile.odb", , "SheetY.C5", "SELECT * FROM [Employees] ORDER BY [LastName]")

### ImportStylesFromFile

ວິທີການນີ້ຈະໂຫຼດທຸກຮູບແບບ (styles) ທີ່ຢູ່ໃນຕະກຸນຮູບແບບໜຶ່ງ ຫຼື ຫຼາຍຕະກຸນ ຈາກໄຟລ໌ທີ່ປິດຢູ່ ເຂົ້າສູ່ເອກະສານປັດຈຸບັນ. ເອກະສານປັດຈຸບັນຕ້ອງເປັນເອກະສານ Calc ຫຼື Writer.

ຈະຖືກນຳເຂົ້າພ້ອມກັນສະເໝີ:

- ParagraphStyles ແລະ CharacterStyles

- NumberingStyles ແລະ ListStyles

ສົ່ງຄືນ True ຖ້ານຳເຂົ້າຮູບແບບສຳເລັດ.

### ໄວຍາກອນ:

svc.ImportStylesFromFile(filename: str, families: str[1..*], overwrite = False): bool

### ພາຣາມິເຕີ:

filename: ໄຟລ໌ທີ່ຈະໂຫຼດຮູບແບບ ໂດຍໃຊ້ຮູບແບບການຂຽນຂອງ FileSystem. ໄຟລ໌ດັ່ງກ່າວຄວນຈະເປັນປະເພດເອກະສານດຽວກັນກັບເອກະສານປັດຈຸບັນ.

families: ໜຶ່ງໃນຕະກຸນຮູບແບບທີ່ມີຢູ່ໃນເອກະສານປັດຈຸບັນ, ໂດຍລະບຸເປັນຂໍ້ຄວາມ (ຕົວອັກສອນໃຫຍ່-ນ້ອຍມີຄວາມໝາຍຕ່າງກັນ) ຫຼື ອາເຣຂອງຂໍ້ຄວາມ. ປະອາຄິວເມນນີ້ໃຫ້ຫວ່າງໄວ້ເພື່ອໂຫຼດທຸກຕະກຸນ.

overwrite: ເມື່ອເປັນ True, ຮູບແບບທີ່ມີຢູ່ອາດຈະຖືກຂຽນທັບ. ຄ່າເລີ່ມຕົ້ນແມ່ນ False.

### ຕົວຢ່າງ:

##### ໃນ Basic

        oDoc.ImportStylesFromFile("C:\User\Documents\myFile.ods", "ParagraphStyles", True)

##### ໃນ Python

        doc.ImportStylesFromFile('C:\User\Documents\myFile.ods', ("ParagraphStyles",), False)

## InsertSheet

ແຊກແຜ່ນງານຫວ່າງໃໝ່ໄວ້ກ່ອນແຜ່ນງານທີ່ມີຢູ່ ຫຼື ໄວ້ທ້າຍສຸດຂອງລາຍການແຜ່ນງານ.

### ໄວຍາກອນ:

svc.InsertSheet(sheetname: str, [beforesheet: any]): bool

### ພາຣາມິເຕີ:

sheetname: ຊື່ຂອງແຜ່ນງານໃໝ່.

beforesheet: ຊື່ (ຂໍ້ຄວາມ) ຫຼື ລຳດັບ (ຕົວເລກ, ເລີ່ມຈາກ 1) ຂອງແຜ່ນງານທີ່ຈະແຊກແຜ່ນງານໃໝ່ໄວ້ທາງໜ້າ. ອາຄິວເມນນີ້ເປັນທາງເລືອກ ແລະ ຄ່າເລີ່ມຕົ້ນແມ່ນຈະແຊກແຜ່ນງານໄວ້ໃນຕຳແໜ່ງສຸດທ້າຍ.

### ຕົວຢ່າງ:

ຕົວຢ່າງຕໍ່ໄປນີ້ຈະແຊກແຜ່ນງານຫວ່າງໃໝ່ທີ່ຊື່ວ່າ "SheetX" ແລະ ວາງມັນໄວ້ທາງໜ້າ "SheetY":

##### ໃນ Basic

        oDoc.InsertSheet("SheetX", "SheetY")

##### ໃນ Python

        myDoc.InsertSheet("SheetX", "SheetY")

## Intersect

ສົ່ງຄືນຂໍ້ຄວາມທີ່ແທນການທັບຊ້ອນກັນ (intersection) ລະຫວ່າງສອງຊ່ວງທີ່ນຳເຂົ້າ, ຫຼື ສົ່ງຄືນຂໍ້ຄວາມຫວ່າງຫາກບໍ່ມີການທັບຊ້ອນກັນ.

### ໄວຍາກອນ:

svc.Intersect(range1:str, range2: str): str

### ພາຣາມິເຕີ:

range1: ຂໍ້ຄວາມທີ່ຢູ່ຂອງໄລຍະຂໍ້ມູນ 1.

range2: ຂໍ້ຄວາມທີ່ຢູ່ຂອງໄລຍະຂໍ້ມູນ 2.

### ຕົວຢ່າງ:

ຕົວຢ່າງຕໍ່ໄປນີ້ຈະຫາການທັບຊ້ອນກັນຂອງສອງຊ່ວງ, ແລະ ສົ່ງຄືນຊ່ວງທີ່ຢູ່ຮ່ວມກັນລະຫວ່າງທັງສອງ:

##### ໃນ Basic

        Dim commonrange As String
        commonrange = oDoc.Intersect("A1:D8", "C3:F4")
        Print commonrange ' ສະແດງ "$Sheet1.$C$3:$D$4"

##### ໃນ Python

        common_range = myDoc.Intersect("A1:D8", "C3:F4")
        print(common_range)  # ສົ່ງຜົນລັດ '$Sheet1.$C$3:$D$4' ໄປຫາ Python shell

## MoveRange

ຍ້າຍຊ່ວງຕົ້ນທາງທີ່ລະບຸ ໄປຫາຊ່ວງເຊວປາຍທາງ. ເມທອດນີ້ສົ່ງຄືນຂໍ້ຄວາມທີ່ແທນຊ່ວງຂອງເຊວທີ່ຖືກປ່ຽນແປງ. ຂະໜາດຂອງພື້ນທີ່ທີ່ຖືກປ່ຽນແປງຈະຖືກກຳນົດໂດຍຂະໜາດຂອງພື້ນທີ່ຕົ້ນທາງ.

### ໄວຍາກອນ:

svc.MoveRange(source: str, destination: str): str

### ພາຣາມິເຕີ:

source: ໄລຍະຂໍ້ມູນຕົ້ນທາງຂອງຫ້ອງ, ໃນຮູບແບບຂໍ້ຄວາມ.

destination: ຫ້ອງປາຍທາງ, ໃນຮູບແບບຂໍ້ຄວາມ. ຫາກກຳນົດເປັນໄລຍະຂໍ້ມູນ, ຈະພິຈາລະນາຫ້ອງເທິງຊ້າຍສຸດເປັນປາຍທາງ.

### ຕົວຢ່າງ:

##### ໃນ Basic

        oDoc.MoveRange("SheetX.A1:F10", "SheetY.C5")

##### ໃນ Python

        myDoc.MoveRange("SheetX.A1:F10", "SheetY.C5")

## MoveSheet

ຍ້າຍແຜ່ນງານທີ່ມີຢູ່ ແລະ ວາງມັນໄວ້ກ່ອນແຜ່ນງານທີ່ລະບຸ ຫຼື ໄວ້ທ້າຍສຸດຂອງລາຍການແຜ່ນງານ.

### ໄວຍາກອນ:

svc.MoveSheet(sheetname: str, [beforesheet: any]): bool

### ພາຣາມິເຕີ:

sheetname: ຊື່ຂອງແຜ່ນງານທີ່ຕ້ອງການຍ້າຍ. ແຜ່ນງານນັ້ນຕ້ອງມີຢູ່ຈິງ ຖ້າບໍ່ດັ່ງນັ້ນຈະເກີດຂໍ້ຜິດພາດ (exception).

beforesheet: ຊື່ (ສະຕຣິງ) ຫຼື ດັດຊະນີ (ຕົວເລກ, ເລີ່ມຈາກ 1) ຂອງແຜ່ນງານທີ່ຈະວາງແຜ່ນງານຕົ້ນສະບັບໄວ້ກ່ອນໜ້າມັນ. ອາຄິວເມນນີ້ເປັນທາງເລືອກ ແລະ ພຶດຕິກຳເລີ່ມຕົ້ນແມ່ນການຍ້າຍແຜ່ນງານໄປໄວ້ຕຳແໜ່ງສຸດທ້າຍ.

### ຕົວຢ່າງ:

ຕົວຢ່າງຂ້າງລຸ່ມນີ້ແມ່ນການຍ້າຍແຜ່ນງານ "SheetX" ທີ່ມີຢູ່ແລ້ວໄປວາງໄວ້ກ່ອນໜ້າ "SheetY":

##### ໃນ Basic

        oDoc.MoveSheet("SheetX", "SheetY")

##### ໃນ Python

        myDoc.MoveSheet("SheetX", "SheetY")

## Offset

ສົ່ງຄືນຊ່ວງໃໝ່ (ໃນຮູບແບບສະຕຣິງ) ທີ່ຖືກເລື່ອນ (offset) ໄປຕາມຈຳນວນແຖວ ແລະ ຖັນທີ່ກຳນົດຈາກຊ່ວງທີ່ໃຫ້ມາ.

ວິທີການນີ້ມີການເຮັດວຽກຄືກັນກັບ ຟັງຊັນ Offset ຂອງ Calc ທີ່ມີຊື່ດຽວກັນ.

### ໄວຍາກອນ:

svc.Offset(reference: str, rows: int = 0, columns: int = 0, [height: int], [width: int]): str

### ພາຣາມິເຕີ:

reference: ຊ່ວງ (ໃນຮູບແບບສະຕຣິງ) ທີ່ວິທີການນີ້ຈະໃຊ້ເປັນບ່ອນອ້າງອີງເພື່ອດຳເນີນການເລື່ອນ (offset).

rows: ຈຳນວນແຖວທີ່ຊ່ວງເລີ່ມຕົ້ນຈະຖືກເລື່ອນຂຶ້ນ (ຄ່າລົບ) ຫຼື ເລື່ອນລົງ (ຄ່າບວກ). ໃຊ້ 0 (ຄ່າເລີ່ມຕົ້ນ) ເພື່ອໃຫ້ຢູ່ແຖວເກົ່າ.

columns: ຈຳນວນຖັນທີ່ຊ່ວງເລີ່ມຕົ້ນຈະຖືກເລື່ອນໄປທາງຊ້າຍ (ຄ່າລົບ) ຫຼື ເລື່ອນໄປທາງຂວາ (ຄ່າບວກ). ໃຊ້ 0 (ຄ່າເລີ່ມຕົ້ນ) ເພື່ອໃຫ້ຢູ່ຖັນເກົ່າ.

height: ຄວາມສູງແນວຕັ້ງສຳລັບພື້ນທີ່ທີ່ເລີ່ມຈາກຕຳແໜ່ງຊ່ວງໃໝ່. ໃຫ້ຂ້າມອາຄິວເມນນີ້ໄປຫາກບໍ່ຕ້ອງການປ່ຽນຂະໜາດແນວຕັ້ງ.

width: ຄວາມກວ້າງແນວນອນສຳລັບພື້ນທີ່ທີ່ເລີ່ມຈາກຕຳແໜ່ງຊ່ວງໃໝ່. ໃຫ້ຂ້າມອາຄິວເມນນີ້ໄປຫາກບໍ່ຕ້ອງການປ່ຽນຂະໜາດແນວນອນ.

ອາຄິວເມນ rows ແລະ columns ຕ້ອງບໍ່ເຮັດໃຫ້ແຖວ ຫຼື ຖັນເລີ່ມຕົ້ນເປັນສູນ ຫຼື ເປັນຄ່າລົບ.

ອາຄິວເມນ height ແລະ width ຕ້ອງບໍ່ເຮັດໃຫ້ຈຳນວນແຖວ ຫຼື ຖັນເປັນສູນ ຫຼື ເປັນຄ່າລົບ.

### ຕົວຢ່າງ:

##### ໃນ Basic

        oDoc.Offset("A1", 2, 2)
        'SheetX.$C$3 (A1 ຖືກຍ້າຍລົງສອງແຖວ ແລະ ສອງຖັນ)
        oDoc.Offset("A1", 2, 2, 5, 6)
        'SheetX.$C$3:$H$7 (A1 ຖືກເລື່ອນລົງສອງແຖວ ແລະ ຖັນ ໂດຍມີຄວາມສູງ 5 ແຖວ ແລະ ຄວາມກວ້າງ 6 ຖັນ)

##### ໃນ Python

        myDoc.Offset("A1", 2, 2)
        myDoc.Offset("A1", 2, 2, 5, 6)

## OpenRangeSelector

ເປີດກ່ອງໂຕ້ຕອບແບບ non-modal ທີ່ສາມາດໃຊ້ເພື່ອເລືອກຊ່ວງໃນເອກະສານ ແລະ ສົ່ງຄືນສະຕຣິງທີ່ບັນຈຸຊ່ວງທີ່ຖືກເລືອກ.

ວິທີການນີ້ຈະເປີດກ່ອງໂຕ້ຕອບອັນດຽວກັນກັບທີ່ LibreOffice ໃຊ້ເມື່ອມີການກົດປຸ່ມຫຍໍ້ (Shrink). ຕົວຢ່າງ: ກ່ອງໂຕ້ຕອບ Tools - Goal Seek ມີປຸ່ມຫຍໍ້ຢູ່ທາງເບື້ອງຂວາຂອງຊ່ອງ Formula cell.

ວິທີການນີ້ຈະບໍ່ປ່ຽນແປງການເລືອກໃນປັດຈຸບັນ.

### ໄວຍາກອນ:

svc.OpenRangeSelector(opt title: str, opt selection: str, singlecell: bool = False, closeafterselect: bool = True): str

### ພາຣາມິເຕີ:

title: ຊື່ຫົວຂໍ້ຂອງກ່ອງໂຕ້ຕອບ, ໃນຮູບແບບສະຕຣິງ.

selection: ຊ່ວງທາງເລືອກທີ່ຈະຖືກເລືອກໄວ້ກ່ອນໃນຕອນທີ່ສະແດງກ່ອງໂຕ້ຕອບ.

singlecell: ເມື່ອເປັນ True (ຄ່າເລີ່ມຕົ້ນ) ຈະອະນຸຍາດໃຫ້ເລືອກໄດ້ພຽງເຊລດຽວເທົ່ານັ້ນ. ເມື່ອເປັນ False ຈະອະນຸຍາດໃຫ້ເລືອກເປັນຊ່ວງໄດ້.

closeafterselect: ເມື່ອເປັນ True (ຄ່າເລີ່ມຕົ້ນ) ກ່ອງໂຕ້ຕອບຈະຖືກປິດທັນທີຫຼັງຈາກທີ່ມີການເລືອກ. ເມື່ອເປັນ False ຜູ້ໃຊ້ສາມາດປ່ຽນການເລືອກໄດ້ຫຼາຍຄັ້ງຕາມທີ່ຕ້ອງການ ແລ້ວຈຶ່ງປິດກ່ອງໂຕ້ຕອບດ້ວຍຕົນເອງ.

### ຕົວຢ່າງ:

##### ໃນ Basic

        Dim sRange as String
        sRange = oDoc.OpenRangeSelector(Title := "Select a range")

##### ໃນ Python

        sRange = myDoc.OpenRangeSelector(title = "Select a range")

## Printf

ສົ່ງຄືນສະຕຣິງທີ່ປ້ອນເຂົ້າ ຫຼັງຈາກປ່ຽນແທນຕົວອັກສອນໂທເຄັນ (token) ດ້ວຍຄ່າຂອງພວກມັນໃນຊ່ວງທີ່ກຳນົດ.

ວິທີການນີ້ຈະບໍ່ປ່ຽນແປງການເລືອກໃນປັດຈຸບັນ.

ວິທີການນີ້ສາມາດໃຊ້ເພື່ອດຶງເອົາພາກສ່ວນສະເພາະຂອງຊື່ຊ່ວງອອກມາໄດ້ຢ່າງວ່ອງໄວ ເຊັ່ນ: ຊື່ແຜ່ນງານ ຫຼື ຖັນ ແລະ ແຖວຂອງເຊລທຳອິດ ແລະ ນຳໃຊ້ພວກມັນເພື່ອສ້າງທີ່ຢູ່ຊ່ວງໃໝ່.

### ໄວຍາກອນ:

svc.Printf(inputstr: str, range: str, tokencharacter: str = "%"): str

### ພາຣາມິເຕີ:

inputstr: ສະຕຣິງທີ່ມີໂທເຄັນເຊິ່ງຈະຖືກປ່ຽນແທນດ້ວຍຄ່າທີ່ກົງກັນໃນ range.

range: ຊື່ຊ່ວງ (RangeName) ທີ່ຈະດຶງເອົາຄ່າອອກມາ. ຖ້າມັນມີຊື່ແຜ່ນງານ, ແຜ່ນງານນັ້ນຕ້ອງມີຢູ່ແທ້.

tokencharacter: ຕົວອັກສອນທີ່ໃຊ້ເພື່ອລະບຸໂທເຄັນ. ໂດຍເລີ່ມຕົ້ນ "%" ແມ່ນຕົວອັກສອນໂທເຄັນ. ໂທເຄັນຕໍ່ໄປນີ້ແມ່ນສາມາດໃຊ້ໄດ້:

- %S - ຊື່ແຜ່ນງານທີ່ມີຊ່ວງນັ້ນຢູ່, ລວມທັງເຄື່ອງໝາຍຄຳເວົ້າດ່ຽວ (single quotes) ເມື່ອຈຳເປັນ.

- %R1 - ເລກແຖວຂອງເຊລຢູ່ທາງເທິງເບື້ອງຊ້າຍຂອງຊ່ວງ.

- %C1 - ຕົວອັກສອນຖັນຂອງເຊລຢູ່ທາງເທິງເບື້ອງຊ້າຍຂອງຊ່ວງ.

- %R2 - ເລກແຖວຂອງເຊລຢູ່ທາງລຸ່ມເບື້ອງຂວາຂອງຊ່ວງ.

- %C2 - ຕົວອັກສອນຖັນຂອງເຊລຢູ່ທາງລຸ່ມເບື້ອງຂວາຂອງຊ່ວງ.

### ຕົວຢ່າງ:

##### ໃນ Basic

ຕົວຢ່າງຂ້າງລຸ່ມນີ້ດຶງເອົາແຕ່ລະອົງປະກອບຂອງ RangeName ທີ່ກຳນົດໃນ sRange ແລະ ນຳໃຊ້ພວກມັນເພື່ອສ້າງຂໍ້ຄວາມ.

        Dim sRange as String, sInputStr as String
        sRange = "Sheet1.A1:E10"
        sInputStr = "Sheet name: %S" & Chr(10) & _
                    "First row: %R1" & Chr(10) & _
                    "First column %C1" & Chr(10) & _
                    "Last row %R2" & Chr(10) & _
                    "Last column %C2"
        MsgBox oDoc.Printf(sInputStr, sRange)

ວິທີການ Printf ສາມາດໃຊ້ຮ່ວມກັບ SetFormula ເພື່ອສ້າງສູດຄິດໄລ່ໃນຫຼາຍໆເຊລ. ຕົວຢ່າງ: ສົມມຸດວ່າມີຕາຕະລາງທີ່ມີຄ່າຕົວເລກໃນຊ່ວງ "A1:E10" ເຊິ່ງຕ້ອງການສ້າງສູດເພື່ອລວມຄ່າໃນແຕ່ລະແຖວ ແລະ ວາງຜົນລັບໄວ້ໃນຊ່ວງ "F1:F10":

        Dim sFormula as String, sRange as String
        sRange = "A1:E10"
        ' ສັງເກດການນຳໃຊ້ຕົວອັກສອນ "$"
        sFormula = "=SUM($%C1%R1:$%C2%R1)"
        oDoc.SetFormula("F1:F10", oDoc.Printf(sFormula, sRange))

##### ໃນ Python

        sRange = "Sheet1.A1:E10"
        sInputStr = "Sheet name: %S\n" \
                    "First row: %R1\n" \
                    "First column %C1\n" \
                    "Last row %R2\n" \
                    "Last column %C2"
        bas = CreateScriptService("Basic")
        bas.MsgBox(myDoc.Printf(sInputStr, sRange))

        sRange = "A1:E10
        sFormula = "=SUM($%C1%R1:$%C2%R1)"
        myDoc.SetFormula("F1:F10", myDoc.Printf(sFormula, sRange))

## PrintOut

ວິທີການນີ້ຈະສົ່ງເນື້ອໃນຂອງແຜ່ນງານທີ່ໃຫ້ມາໄປຍັງເຄື່ອງພິມເລີ່ມຕົ້ນ ຫຼື ເຄື່ອງພິມທີ່ກຳນົດໂດຍວິທີການ SetPrinter ຂອງບໍລິການ Document.

ສົ່ງຄືນ True ຖ້າການພິມແຜ່ນງານສຳເລັດ.

### ໄວຍາກອນ:

svc.PrintOut(opt sheetname: str, pages: str = "", copies: num = 1): bool

### ພາຣາມິເຕີ:

sheetname: ແຜ່ນງານທີ່ຈະພິມ, ຄ່າເລີ່ມຕົ້ນແມ່ນແຜ່ນງານທີ່ກຳລັງໃຊ້ຢູ່.

pages: ໜ້າທີ່ຈະພິມໃນຮູບແບບສະຕຣິງ, ຄືກັນກັບໃນສ່ວນຕິດຕໍ່ຜູ້ໃຊ້. ຕົວຢ່າງ: "1-4;10;15-18". ຄ່າເລີ່ມຕົ້ນແມ່ນທຸກໜ້າ.

copies: ຈຳນວນຊຸດທີ່ຈະພິມ. ຄ່າເລີ່ມຕົ້ນແມ່ນ 1.

### ຕົວຢ່າງ:

##### ໃນ Basic

        If oDoc.PrintOut("SheetX", "1-4;10;15-18", Copies := 2) Then
            ' ...
        End If

##### ໃນ Python

        if doc.PrintOut('SheetX', copies=3, pages='45-88'):
            # ...

## RemoveDuplicates

ລຶບແຖວທີ່ຊ້ຳກັນອອກຈາກຊ່ວງທີ່ກຳນົດ. ການປຽບທຽບເພື່ອພິຈາລະນາວ່າແຖວໃດຊ້ຳກັນແມ່ນອີງຕາມຊຸດຍ່ອຍຂອງຖັນໃນຊ່ວງນັ້ນ.

ວິທີການນີ້ສົ່ງຄືນສະຕຣິງທີ່ບັນຈຸຊ່ວງຜົນລັບ.

ການລຶບແຖວທີ່ຊ້ຳກັນແມ່ນເລີ່ມຈາກແຖວທຳອິດໃນຊ່ວງແລ້ວໄລ່ລົງໄປຂ້າງລຸ່ມ, ໝາຍຄວາມວ່າຖ້າມີສອງແຖວ ຫຼື ຫຼາຍກວ່ານັ້ນຊ້ຳກັນ, ຈະມີພຽງແຖວທຳອິດເທົ່ານັ້ນທີ່ຖືກເກັບໄວ້.

### ໄວຍາກອນ:

svc.RemoveDuplicates(range: str, opt columns: int[0..*], header: bool = False, casesensitive: bool = False, mode: str = "COMPACT"): str

### ພາຣາມິເຕີ:

range: ຊ່ວງທີ່ຈະລຶບແຖວຊ້ຳອອກ, ໃນຮູບແບບສະຕຣິງ.

columns: ອາເຣທີ່ບັນຈຸເລກຖັນເພື່ອລະບຸວ່າຈະໃຊ້ຖັນໃດໃນການພິຈາລະນາວ່າແຖວຊ້ຳກັນຫຼືບໍ່. ຖ້າປ່ອຍອາຄິວເມນນີ້ວ່າງໄວ້, ຈະໃຊ້ພຽງຖັນທຳອິດເທົ່ານັ້ນ. ລາຍການໃນອາເຣນີ້ຕ້ອງຢູ່ໃນຊ່ວງລະຫວ່າງ 1 ຫາ ຄວາມກວ້າງຂອງຊ່ວງ.

header: ກຳນົດວ່າແຖວທຳອິດເປັນແຖວຫົວຂໍ້ຫຼືບໍ່ (ຄ່າເລີ່ມຕົ້ນ = False).

casesensitive: ກຳນົດວ່າການປຽບທຽບສະຕຣິງຈະຕ້ອງກົງກັນທັງຕົວພິມໃຫຍ່ ແລະ ຕົວພິມນ້ອຍຫຼືບໍ່ (ຄ່າເລີ່ມຕົ້ນ = False).

mode: ກຳນົດວ່າຈະເຮັດແນວໃດກັບແຖວທີ່ຊ້ຳກັນ. ຖ້າ mode = "CLEAR" ແຖວທີ່ຊ້ຳຈະຖືກລຶບອອກຈາກແຜ່ນງານໂດຍປ່ອຍໃຫ້ເຊລວ່າງໄວ້. ຖ້າ mode = "COMPACT" ແຖວທີ່ຊ້ຳຈະຖືກລຶບອອກ ແລະ ແຖວທີ່ວ່າງຈະຖືກບີບຂຶ້ນເທິງ (ຄ່າເລີ່ມຕົ້ນ = "COMPACT").

### ຕົວຢ່າງ:

##### ໃນ Basic

        ' ລຶບແຖວທີ່ຊ້ຳກັນ ບ່ອນທີ່ມີຄ່າໃນຖັນ A ຊ້ຳກັນ
        ' ສັງເກດວ່າອາຄິວເມນທາງເລືອກທັງໝົດຈະໃຊ້ຄ່າເລີ່ມຕົ້ນຂອງພວກມັນ
        oDoc.RemoveDuplicates("A1:B10")
        ' ລຶບແຖວທີ່ຊ້ຳກັນ ໂດຍພິຈາລະນາວ່າແຖວທຳອິດມີຫົວຂໍ້
        ' ໃຊ້ຖັນ A ແລະ B ເພື່ອພິຈາລະນາວ່າແຖວໃດຊ້ຳກັນ
        ' ເຊລທີ່ມີຄ່າຊ້ຳກັນຈະຖືກປ່ອຍໃຫ້ວ່າງໄວ້
        oDoc.RemoveDuplicates("A1:D10", columns := Array(1, 2), header := True, mode := "CLEAR")

##### ໃນ Python

        myDoc.RemoveDuplicates("A1:B10")
        myDoc.RemoveDuplicates("A1:D10", columns = (1, 2), header = True, mode = "CLEAR")

## RemoveSheet

ລຶບແຜ່ນງານທີ່ມີຢູ່ແລ້ວອອກຈາກເອກະສານ.

### ໄວຍາກອນ:

svc.RemoveSheet(sheetname: str): bool

### ພາຣາມິເຕີ:

sheetname: ຊື່ຂອງແຜ່ນງານທີ່ຈະລຶບອອກ.

### ຕົວຢ່າງ:

##### ໃນ Basic

        oDoc.RemoveSheet("SheetY")

##### ໃນ Python

        myDoc.RemoveSheet("SheetY")

## RenameSheet

ປ່ຽນຊື່ແຜ່ນງານທີ່ໃຫ້ມາ ແລະ ສົ່ງຄືນ True ຖ້າສຳເລັດ.

### ໄວຍາກອນ:

svc.RenameSheet(sheetname: str, newname: str): bool

### ພາຣາມິເຕີ:

sheetname: ຊື່ຂອງແຜ່ນງານທີ່ຈະປ່ຽນຊື່.

newname: ຊື່ໃໝ່ຂອງແຜ່ນງານ. ມັນຕ້ອງເປັນຊື່ທີ່ຍັງບໍ່ທັນມີເທື່ອ.

### ຕົວຢ່າງ:

ຕົວຢ່າງນີ້ປ່ຽນຊື່ແຜ່ນງານທີ່ກຳລັງໃຊ້ຢູ່ເປັນ "SheetY":

##### ໃນ Basic

        oDoc.RenameSheet("~", "SheetY")

##### ໃນ Python

        mydoc.RenameSheet("~", "SheetY")

## SetArray

ເກັບຄ່າທີ່ໃຫ້ມາ ໂດຍເລີ່ມຈາກເຊລເປົ້າໝາຍທີ່ກຳນົດ. ພື້ນທີ່ທີ່ຖືກອັບເດດຈະຂະຫຍາຍຕົວມັນເອງຈາກເຊລເປົ້າໝາຍ ຫຼື ຈາກມຸມເທິງຊ້າຍຂອງຊ່ວງທີ່ໃຫ້ມາ ເພື່ອໃຫ້ຮອງຮັບຂະໜາດຂອງອາຄິວເມນ value ທີ່ປ້ອນເຂົ້າ. ເວກເຕີ (Vectors) ຈະຖືກຂະຫຍາຍໃນແນວຕັ້ງສະເໝີ.

ວິທີການນີ້ສົ່ງຄືນສະຕຣິງທີ່ສະແດງເຖິງພື້ນທີ່ທີ່ຖືກປ່ຽນແປງໃນຮູບແບບຂອງຊ່ວງເຊລ.

### ໄວຍາກອນ:

svc.SetArray(targetcell: str, value: any): str

### ພາຣາມິເຕີ:

targetcell: ເຊລ ຫຼື ຊ່ວງໃນຮູບແບບສະຕຣິງທີ່ຈະເລີ່ມເກັບຄ່າທີ່ໃຫ້ມາ.

value: ຄ່າສະກາລາ (scalar), ເວກເຕີ (vector) ຫຼື ອາເຣ (array) (ໃນ Python ແມ່ນລິສ ຫຼື ທຸບໂພ ທີ່ມີໜຶ່ງ ຫຼື ສອງມິຕິ) ທີ່ມີຄ່າໃໝ່ທີ່ຈະເກັບເລີ່ມຈາກເຊລເປົ້າໝາຍ ຫຼື ຈາກມຸມເທິງຊ້າຍຂອງຊ່ວງ (ຖ້າ targetcell ເປັນຊ່ວງ). ຄ່າໃໝ່ຕ້ອງເປັນສະຕຣິງ, ຕົວເລກ ຫຼື ວັນທີ. ປະເພດອື່ນໆຈະເຮັດໃຫ້ເຊລທີ່ກ່ຽວຂ້ອງຖືກປ່ອຍໃຫ້ວ່າງ.

### ຕົວຢ່າງ:

##### ໃນ Basic

ຕົວຢ່າງຕໍ່ໄປນີ້ໃຊ້ ຟັງຊັນ DimArray ທີ່ມີມາໃຫ້ເພື່ອສ້າງອາເຣ ແລ້ວເກັບມັນໄວ້ໃນເຊລ "A1":

        Dim arrData as Variant
        arrData = DimArray(2, 1)
        arrData(0, 0) = 1 : arrData(1, 0) = 2 : arrData(2, 0) = 3
        arrData(0, 1) = "One" : arrData(1, 1) = "Two" : arrData(2, 1) = "Three"
        oDoc.SetArray("Sheet1.A1", arrData)

ຕົວຢ່າງນີ້ໃຊ້ວິທີການ RangeInit ຂອງ ບໍລິການ ScriptForge Array ເພື່ອສ້າງອາເຣທີ່ມີຄ່າ ເຊິ່ງຈະຖືກເກັບໄວ້ເລີ່ມຈາກເຊລ "A1" ລົງໄປຂ້າງລຸ່ມ.

        'ຕື່ມຂໍ້ມູນໃນຖັນທີ 1 ດ້ວຍຄ່າຕັ້ງແຕ່ 1 ຫາ 1000
        oDoc.SetArray("Sheet1.A1", SF_Array.RangeInit(1, 1000))

##### ໃນ Python

        arrData = ((1, "One"), (2, "Two"), (3, "Three"))
        myDoc.SetArray("Sheet1.A1", arrData)

        myDoc.SetArray("Sheet1.A1", tuple(i + 1 for i in range(1000)))

ເພື່ອວາງເນື້ອໃນທັງໝົດຂອງອາເຣລົງໃນແຜ່ນງານ, ໃຫ້ໃຊ້ SetArray. ເພື່ອວາງເນື້ອໃນຂອງອາເຣສະເພາະພາຍໃນຂອບເຂດຂອງຊ່ວງເຊລເປົ້າໝາຍ, ໃຫ້ໃຊ້ SetValue.

## SetCellStyle

ນຳໃຊ້ຮູບແບບເຊລ (cell style) ທີ່ກຳນົດໃຫ້ກັບຊ່ວງເປົ້າໝາຍ. ທັງໝົດຊ່ວງຈະຖືກອັບເດດ ແລະ ສ່ວນທີ່ເຫຼືອຂອງແຜ່ນງານຈະບໍ່ຖືກແຕະຕ້ອງ. ຖ້າບໍ່ມີຮູບແບບເຊລນັ້ນຢູ່, ຈະມີການແຈ້ງເຕືອນຂໍ້ຜິດພາດ.

ວິທີການນີ້ສົ່ງຄືນສະຕຣິງທີ່ສະແດງເຖິງພື້ນທີ່ທີ່ຖືກປ່ຽນແປງໃນຮູບແບບຂອງຊ່ວງເຊລ.

### ໄວຍາກອນ:

svc.SetCellStyle(targetrange: str, style: str, opt filterformula: str, opt filterscope: str): str

### ພາຣາມິເຕີ:

targetrange: ຊ່ວງທີ່ຈະນຳໃຊ້ຮູບແບບ, ໃນຮູບແບບສະຕຣິງ.

style: ຊື່ຂອງຮູບແບບເຊລທີ່ຈະນຳໃຊ້.

filterformula: A Calc formula that shall be applied to the given range to determine which cells will be affected. The specified formula must return True or False. If this argument is not specified, then all cells in the range are affected.

filterscope: Determines how filterformula is expanded to the given range. This argument is mandatory if a filterformula is specified. The following values are accepted:

- "CELL": The formula specified in the filterformula argument is expanded once for each cell in range.

- "ROW": The formula specified in the filterformula argument is expanded once for each row in range.

- "COLUMN": The formula specified in the filterformula argument is expanded once for each column in range.

### ຕົວຢ່າງ:

##### ໃນ Basic

        oDoc.SetCellStyle("A1:J1", "Heading 1")
        oDoc.SetCellStyle("A2:J100", "Neutral")

##### ໃນ Python

        myDoc.SetCellStyle("A1:J1", "Heading 1")
        myDoc.SetCellStyle("A2:J100", "Neutral")

ໃຫ້ອ້າງອີງເຖິງເອກະສານຂອງວິທີການ ClearAll ສຳລັບຕົວຢ່າງການນຳໃຊ້ອາຄິວເມນ filterformula ແລະ filterscope.

## SetFormula

ແຊກສູດ (ຫຼື ອາເຣຂອງສູດ) ທີ່ໃຫ້ມາລົງໃນຊ່ວງທີ່ກຳນົດ. ຂະໜາດຂອງພື້ນທີ່ທີ່ຖືກປ່ຽນແປງຈະເທົ່າກັບຂະໜາດຂອງຊ່ວງ.

ວິທີການນີ້ສົ່ງຄືນສະຕຣິງທີ່ສະແດງເຖິງພື້ນທີ່ທີ່ຖືກປ່ຽນແປງໃນຮູບແບບຂອງຊ່ວງເຊລ.

### ໄວຍາກອນ:

svc.SetFormula(targetrange: str, formula: any): str

### ພາຣາມິເຕີ:

targetrange: ຊ່ວງທີ່ຈະແຊກສູດ, ໃນຮູບແບບສະຕຣິງ.

formula: ສະຕຣິງ, ເວກເຕີ ຫຼື ອາເຣຂອງສະຕຣິງທີ່ມີສູດໃໝ່ສຳລັບແຕ່ລະເຊລໃນຊ່ວງເປົ້າໝາຍ.

ທັງໝົດຊ່ວງຈະຖືກອັບເດດ ແລະ ສ່ວນທີ່ເຫຼືອຂອງແຜ່ນງານຈະບໍ່ມີການປ່ຽນແປງ.

ຖ້າສູດທີ່ໃຫ້ມາເປັນສະຕຣິງ, ສູດດຽວນັ້ນຈະຖືກວາງລົງໃນທົ່ວຊ່ວງ ໂດຍມີການປັບການອ້າງອີງແບບສຳພັດ (relative references) ໃຫ້ອັດຕະໂນມັດ.

ຖ້າຂະໜາດຂອງ formula ນ້ອຍກວ່າຂະໜາດຂອງ targetrange, ເຊລທີ່ເຫຼືອຈະຖືກປ່ອຍໃຫ້ວ່າງ.

ຖ້າຂະໜາດຂອງ formula ໃຫຍ່ກວ່າຂະໜາດຂອງ targetrange, ສູດຈະຖືກຄັດລອກພຽງບາງສ່ວນຈົນກວ່າຈະເຕັມຂະໜາດຂອງ targetrange.

ເວກເຕີ (Vectors) ຈະຖືກຂະຫຍາຍໃນແນວຕັ້ງສະເໝີ, ຍົກເວັ້ນໃນກໍລະນີທີ່ targetrange ມີຄວາມສູງພຽງແຕ່ 1 ແຖວ.

ຟັງຊັນ Calc ທີ່ໃຊ້ໃນອາຄິວເມນ formula ຕ້ອງຂຽນເປັນຊື່ພາສາອັງກິດ. ສາມາດເຂົ້າເບິ່ງໜ້າ Wiki List of Calc Functions ເພື່ອເບິ່ງລາຍຊື່ຟັງຊັນ Calc ທັງໝົດເປັນພາສາອັງກິດ.

### ຕົວຢ່າງ:

##### ໃນ Basic

        oDoc.SetFormula("A1", "=A2")
        'ເວກເຕີແນວນອນ, ບາງສ່ວນວ່າງ
        oDoc.SetFormula("A1:F1", Array("=A2", "=B2", "=C2+10"))
        'D2 ມີສູດ "=H2"
        oDoc.SetFormula("A1:D2", "=E1")

##### ໃນ Python

        myDoc.SetFormula("A1", "=A2")
        myDoc.SetFormula("A1:F1", ("=A2", "=B2", "=C2+10"))
        myDoc.SetFormula("A1:D2", "=E1")

## SetValue

ເກັບຄ່າທີ່ໃຫ້ມາລົງໃນຊ່ວງທີ່ກຳນົດ. ຂະໜາດຂອງພື້ນທີ່ທີ່ຖືກປ່ຽນແປງຈະເທົ່າກັບຂະໜາດຂອງຊ່ວງເປົ້າໝາຍ.

ວິທີການນີ້ສົ່ງຄືນສະຕຣິງທີ່ສະແດງເຖິງພື້ນທີ່ທີ່ຖືກປ່ຽນແປງໃນຮູບແບບຂອງຊ່ວງເຊລ.

### ໄວຍາກອນ:

svc.SetValue(targetrange: str, value: any): str

### ພາຣາມິເຕີ:

targetrange: ຊ່ວງທີ່ຈະເກັບຄ່າທີ່ໃຫ້ມາ, ໃນຮູບແບບສະຕຣິງ.

value: ຄ່າສະກາລາ (scalar), ເວກເຕີ (vector) ຫຼື ອາເຣ (array) ທີ່ມີຄ່າໃໝ່ສຳລັບແຕ່ລະເຊລໃນຊ່ວງ. ຄ່າໃໝ່ຕ້ອງເປັນສະຕຣິງ, ຕົວເລກ ຫຼື ວັນທີ. ປະເພດອື່ນໆຈະເຮັດໃຫ້ເຊລທີ່ກ່ຽວຂ້ອງຖືກປ່ອຍໃຫ້ວ່າງ.

ທັງໝົດຊ່ວງຈະຖືກອັບເດດ ແລະ ສ່ວນທີ່ເຫຼືອຂອງແຜ່ນງານຈະບໍ່ມີການປ່ຽນແປງ. ຖ້າຂະໜາດຂອງ value ນ້ອຍກວ່າຂະໜາດຂອງ targetrange, ເຊລທີ່ເຫຼືອຈະຖືກປ່ອຍໃຫ້ວ່າງ.

ຖ້າຂະໜາດຂອງ value ໃຫຍ່ກວ່າຂະໜາດຂອງ targetrange, ຄ່າ value ຈະຖືກຄັດລອກພຽງບາງສ່ວນຈົນກວ່າຈະເຕັມຂະໜາດຂອງ targetrange.

ເວກເຕີ (Vectors) ຈະຖືກຂະຫຍາຍໃນແນວຕັ້ງ, ຍົກເວັ້ນໃນກໍລະນີທີ່ targetrange ມີຄວາມສູງພຽງແຕ່ 1 ແຖວ.

### ຕົວຢ່າງ:

##### ໃນ Basic

        oDoc.SetValue("A1", 2)
        'ຂ້າງລຸ່ມນີ້ອາເຣ Value ນ້ອຍກວ່າ TargetRange (ເຊລທີ່ເຫຼືອຈະຖືກປ່ອຍໃຫ້ວ່າງ)
        oDoc.SetValue("A1:F1", Array(1, 2, 3))
        'ຂ້າງລຸ່ມນີ້ Value ແລະ TargetRange ມີຂະໜາດເທົ່າກັນ
        oDoc.SetValue("A1:D2", SF_Array.AppendRow(Array(1, 2, 3, 4), Array(5, 6, 7, 8)))

ຖ້າທ່ານຕ້ອງການຕື່ມຂໍ້ມູນລົງໃນແຖວດຽວ, ທ່ານສາມາດໃຊ້ຟັງຊັນ Offset. ໃນຕົວຢ່າງຂ້າງລຸ່ມນີ້, ສົມມຸດວ່າ arrData ເປັນອາເຣໜຶ່ງມິຕິ:

        Dim firstCell As String : firstCell = "A1"
        Dim lenArray As Integer : lenArray = UBound(arrData) - LBound(arrData) + 1
        Dim newRange As String : newRange = oDoc.Offset(firstCell, width = lenArray)
        oDoc.SetValue(newRange, arrData)

##### ໃນ Python

        myDoc.SetValue("A1", 2)
        myDoc.SetValue("A1:F1", (1, 2, 3))
        myDoc.SetValue("A1:D2", ((1, 2, 3, 4), (5, 6, 7, 8)))

        firstCell = "A1"
        newRange = doc.Offset(firstCell, width = len(arrData))
        doc.SetValue(newRange, arrData)

## ShiftDown

ຍ້າຍຊ່ວງເຊລທີ່ກຳນົດລົງໄປຂ້າງລຸ່ມ ໂດຍການແຊກແຖວວ່າງ. ການເລືອກໃນປັດຈຸບັນຈະບໍ່ໄດ້ຮັບຜົນກະທົບ.

ຂຶ້ນກັບຄ່າຂອງອາຄິວເມນ wholerow, ແຖວທີ່ແຊກເຂົ້າໄປສາມາດກວມເອົາພຽງແຕ່ຄວາມກວ້າງຂອງຊ່ວງທີ່ກຳນົດ ຫຼື ກວມເອົາທຸກຖັນໃນແຖວນັ້ນ.

ວິທີການນີ້ສົ່ງຄືນສະຕຣິງທີ່ສະແດງເຖິງຕຳແໜ່ງໃໝ່ຂອງຊ່ວງເລີ່ມຕົ້ນ.

ຖ້າຊ່ວງທີ່ຖືກຍ້າຍອອກໄປນອກຂອບຂອງແຜ່ນງານ, ຈະບໍ່ມີຫຍັງເກີດຂຶ້ນ.

### ໄວຍາກອນ:

svc.ShiftDown(range: str, wholerow: bool = False, opt rows: int): str

### ພາຣາມິເຕີ:

range: ຊ່ວງທີ່ຈະແຊກແຖວໄວ້ຂ້າງເທິງມັນ, ໃນຮູບແບບສະຕຣິງ.

wholerow: ຖ້າຕັ້ງເປັນ False (ຄ່າເລີ່ມຕົ້ນ), ຄວາມກວ້າງຂອງແຖວທີ່ແຊກຈະເທົ່າກັບຄວາມກວ້າງຂອງ range ທີ່ກຳນົດ. ຖ້າບໍ່ດັ່ງນັ້ນ, ແຖວທີ່ແຊກຈະກວມເອົາທຸກຖັນໃນແຜ່ນງານ.

rows: ຈຳນວນແຖວທີ່ຈະແຊກ. ຄ່າເລີ່ມຕົ້ນແມ່ນຄວາມສູງຂອງ range ຕົ້ນສະບັບ. ຈຳນວນແຖວຕ້ອງເປັນຕົວເລກບວກ.

### ຕົວຢ່າງ:

##### ໃນ Basic

        ' ຍ້າຍຊ່ວງ "A3:D3" ລົງໄປໜຶ່ງແຖວ; ມີຜົນກະທົບສະເພາະຖັນ A ຫາ D
        oDoc.ShiftDown("A3:D3")
        ' ແຖວທີ່ແຊກເຂົ້າໄປແມ່ນກວມເອົາທຸກຖັນໃນແຜ່ນງານ
        oDoc.ShiftDown("A3:D3", WholeRow := True)
        ' ຍ້າຍຊ່ວງ "A3:D3" ລົງໄປຫ້າແຖວ
        oDoc.ShiftDown("A3:D3", Rows := 5)
        ' ຍ້າຍຊ່ວງ "A3:D10" ລົງໄປສອງແຖວ ແລະ ສະແດງຕຳແໜ່ງໃໝ່ຂອງຊ່ວງຕົ້ນສະບັບ
        Dim sNewRange as String
        sNewRange = oDoc.ShiftDown("A3:D10", Rows := 2)
        MsgBox sNewRange   ' $Sheet1.$A$5:$D$12

##### ໃນ Python

        myDoc.ShiftDown("A3:D3")
        myDoc.ShiftDown("A3:D3", wholerow = True)
        myDoc.ShiftDown("A3:D3", rows = 5)
        sNewRange = myDoc.ShiftDown("A3:D10", rows = 2)
        bas = CreateScriptService("Basic")
        bas.MsgBox(sNewRange)

## ShiftLeft

ລຶບຖັນທາງຊ້າຍສຸດຂອງຊ່ວງທີ່ກຳນົດ ແລະ ຍ້າຍເຊລທັງໝົດທີ່ຢູ່ທາງຂວາຂອງຊ່ວງນັ້ນໄປທາງຊ້າຍ. ການເລືອກໃນປັດຈຸບັນຈະບໍ່ໄດ້ຮັບຜົນກະທົບ.

ຂຶ້ນກັບຄ່າຂອງອາຄິວເມນ wholecolumn, ຖັນທີ່ຖືກລຶບສາມາດກວມເອົາພຽງແຕ່ຄວາມສູງຂອງຊ່ວງທີ່ກຳນົດ ຫຼື ກວມເອົາທຸກແຖວໃນຖັນນັ້ນ.

ວິທີການນີ້ສົ່ງຄືນສະຕຣິງທີ່ສະແດງເຖິງຕຳແໜ່ງຂອງສ່ວນທີ່ເຫຼືອຂອງຊ່ວງເລີ່ມຕົ້ນ. ຖ້າເຊລທັງໝົດໃນຊ່ວງຕົ້ນສະບັບຖືກລຶບໝົດ, ຈະສົ່ງຄືນເປັນສະຕຣິງວ່າງ.

### ໄວຍາກອນ:

svc.ShiftLeft(range: str, wholecolumn: bool = False, opt columns: int): str

### ພາຣາມິເຕີ:

range: ຊ່ວງທີ່ຈະລຶບເຊລອອກ, ໃນຮູບແບບສະຕຣິງ.

wholecolumn: ຖ້າຕັ້ງເປັນ False (ຄ່າເລີ່ມຕົ້ນ), ຄວາມສູງຂອງຖັນທີ່ຖືກລຶບຈະເທົ່າກັບຄວາມສູງຂອງ range ທີ່ກຳນົດ. ຖ້າບໍ່ດັ່ງນັ້ນ, ຖັນທີ່ລຶບຈະກວມເອົາທຸກແຖວໃນແຜ່ນງານ.

columns: ຈຳນວນຖັນທີ່ຈະລຶບອອກຈາກ range ທີ່ກຳນົດ. ຄ່າເລີ່ມຕົ້ນແມ່ນຄວາມກວ້າງຂອງ range ຕົ້ນສະບັບ, ເຊິ່ງເປັນຄ່າສູງສຸດຂອງອາຄິວເມນນີ້ຄືກັນ.

### ຕົວຢ່າງ:

##### ໃນ Basic

        ' ລຶບຊ່ວງ "B3:B6"; ຍ້າຍເຊລທັງໝົດທີ່ຢູ່ທາງຂວາໄປທາງຊ້າຍ
        oDoc.ShiftLeft("B3:B6")
        ' ລຶບຖັນທຳອິດໃນຊ່ວງ "A3:D6"
        oDoc.ShiftLeft("A3:D6", Columns := 1)
        ' ຖັນທີ່ຖືກລຶບ (A ຫາ D) ແມ່ນກວມເອົາທຸກແຖວໃນແຜ່ນງານ
        oDoc.ShiftLeft("A3:D6", WholeColumn := True)

##### ໃນ Python

        myDoc.ShiftLeft("B3:B6")
        myDoc.ShiftLeft("A3:D6", Columns = 1)
        myDoc.ShiftLeft("A3:D6", WholeColumn = True)

## ShiftUp

ລຶບແຖວເທິງສຸດຂອງຊ່ວງທີ່ກຳນົດ ແລະ ຍ້າຍເຊລທັງໝົດທີ່ຢູ່ລຸ່ມຊ່ວງນັ້ນຂຶ້ນໄປທາງເທິງ. ການເລືອກໃນປັດຈຸບັນຈະບໍ່ໄດ້ຮັບຜົນກະທົບ.

ຂຶ້ນກັບຄ່າຂອງອາຄິວເມນ wholerow, ແຖວທີ່ຖືກລຶບສາມາດກວມເອົາພຽງແຕ່ຄວາມກວ້າງຂອງຊ່ວງທີ່ກຳນົດ ຫຼື ກວມເອົາທຸກຖັນໃນແຖວນັ້ນ.

ວິທີການນີ້ສົ່ງຄືນສະຕຣິງທີ່ສະແດງເຖິງຕຳແໜ່ງຂອງສ່ວນທີ່ເຫຼືອຂອງຊ່ວງເລີ່ມຕົ້ນ. ຖ້າເຊລທັງໝົດໃນຊ່ວງຕົ້ນສະບັບຖືກລຶບໝົດ, ຈະສົ່ງຄືນເປັນສະຕຣິງວ່າງ.

### ໄວຍາກອນ:

svc.ShiftUp(range: str, wholerow: bool = False, opt rows: int): str

### ພາຣາມິເຕີ:

range: ຊ່ວງທີ່ຈະລຶບເຊລອອກ, ໃນຮູບແບບສະຕຣິງ.

wholerow: ຖ້າຕັ້ງເປັນ False (ຄ່າເລີ່ມຕົ້ນ), ຄວາມກວ້າງຂອງແຖວທີ່ຖືກລຶບຈະເທົ່າກັບຄວາມກວ້າງຂອງ range ທີ່ກຳນົດ. ຖ້າບໍ່ດັ່ງນັ້ນ, ແຖວທີ່ລຶບຈະກວມເອົາທຸກຖັນໃນແຜ່ນງານ.

rows: ຈຳນວນແຖວທີ່ຈະລຶບອອກຈາກ range ທີ່ກຳນົດ. ຄ່າເລີ່ມຕົ້ນແມ່ນຄວາມສູງຂອງ range ຕົ້ນສະບັບ, ເຊິ່ງເປັນຄ່າສູງສຸດຂອງອາຄິວເມນນີ້ຄືກັນ.

### ຕົວຢ່າງ:

##### ໃນ Basic

        ' ລຶບຊ່ວງ "A3:D3"; ຍ້າຍເຊລທັງໝົດທີ່ຢູ່ລຸ່ມມັນຂຶ້ນມາທາງເທິງໜຶ່ງແຖວ
        oDoc.ShiftUp("A3:D3")
        ' ລຶບແຖວທຳອິດໃນຊ່ວງ "A3:D6"
        oDoc.ShiftUp("A3:D6", Rows := 1)
        ' ແຖວທີ່ຖືກລຶບແມ່ນກວມເອົາທຸກຖັນໃນແຜ່ນງານ
        oDoc.ShiftUp("A3:D6", WholeRow := True)

##### ໃນ Python

        myDoc.ShiftUp("A3:D3")
        myDoc.ShiftUp("A3:D6", rows = 1)
        myDoc.ShiftUp("A3:D6", wholerow = True)

## ShiftRight

ຍ້າຍຊ່ວງເຊລທີ່ກຳນົດໄປທາງຂວາ ໂດຍການແຊກຖັນວ່າງ. ການເລືອກໃນປັດຈຸບັນຈະບໍ່ໄດ້ຮັບຜົນກະທົບ.

ຂຶ້ນກັບຄ່າຂອງອາຄິວເມນ wholecolumn, ຖັນທີ່ແຊກເຂົ້າໄປສາມາດກວມເອົາພຽງແຕ່ຄວາມສູງຂອງຊ່ວງທີ່ກຳນົດ ຫຼື ກວມເອົາທຸກແຖວໃນຖັນນັ້ນ.

ວິທີການນີ້ສົ່ງຄືນສະຕຣິງທີ່ສະແດງເຖິງຕຳແໜ່ງໃໝ່ຂອງຊ່ວງເລີ່ມຕົ້ນ.

ຖ້າຊ່ວງທີ່ຖືກຍ້າຍອອກໄປນອກຂອບຂອງແຜ່ນງານ, ຈະບໍ່ມີຫຍັງເກີດຂຶ້ນ.

### ໄວຍາກອນ:

svc.ShiftRight(range: str, wholecolumn: bool = False, opt columns: int): str

### ພາຣາມິເຕີ:

range: ຊ່ວງທີ່ຈະມີການແຊກຖັນວ່າງໄວ້ທາງຊ້າຍຂອງມັນ, ໃນຮູບແບບສະຕຣິງ.

wholecolumn: ຖ້າຕັ້ງເປັນ False (ຄ່າເລີ່ມຕົ້ນ), ຄວາມສູງຂອງຖັນທີ່ແຊກຈະເທົ່າກັບຄວາມສູງຂອງ range ທີ່ກຳນົດ. ຖ້າບໍ່ດັ່ງນັ້ນ, ຖັນທີ່ແຊກຈະກວມເອົາທຸກແຖວໃນແຜ່ນງານ.

columns: ຈຳນວນຖັນທີ່ຈະແຊກ. ຄ່າເລີ່ມຕົ້ນແມ່ນຄວາມກວ້າງຂອງ range ຕົ້ນສະບັບ.

### ຕົວຢ່າງ:

##### ໃນ Basic

        ' ຍ້າຍຊ່ວງ "A3:A6" ໄປທາງຂວາໜຶ່ງຖັນ; ມີຜົນກະທົບສະເພາະແຖວ 3 ຫາ 6
        oDoc.ShiftRight("A3:A6")
        ' ຍ້າຍຊ່ວງ "A3:A6" ໄປທາງຂວາຫ້າຖັນ
        oDoc.ShiftRight("A3:A6", Columns := 5)
        ' ຖັນທີ່ແຊກເຂົ້າໄປແມ່ນກວມເອົາທຸກແຖວໃນແຜ່ນງານ
        oDoc.ShiftRight("A3:A6", WholeColumn := True)

##### ໃນ Python

        myDoc.ShiftRight("A3:A6")
        myDoc.ShiftRight("A3:A6", columns = 5)
        myDoc.ShiftRight("A3:A6", wholecolumn = True)

## SortRange

ຈັດລຽງຊ່ວງທີ່ກຳນົດຕາມຈຳນວນຖັນ/ແຖວໃດກໍໄດ້. ລຳດັບການຈັດລຽງອາດຈະແຕກຕ່າງກັນໄປຕາມຖັນ/ແຖວ. ຖ້າຈຳນວນຄີໃນການຈັດລຽງ (sort keys) ຫຼາຍກວ່າ 3, ຊ່ວງຈະຖືກຈັດລຽງຫຼາຍຄັ້ງ ໂດຍແບ່ງເປັນກຸ່ມລະ 3 ຄີ ເລີ່ມຈາກຄີສຸດທ້າຍ. ມັນຈະສົ່ງຄືນສະຕຣິງທີ່ສະແດງເຖິງຊ່ວງເຊລທີ່ຖືກປ່ຽນແປງ. ຂະໜາດຂອງພື້ນທີ່ທີ່ຖືກປ່ຽນແປງແມ່ນຖືກກຳນົດໂດຍຂະໜາດຂອງພື້ນທີ່ຕົ້ນທາງທັງໝົດ.

### ໄວຍາກອນ:

svc.SortRange(range: str, sortkeys: any, sortorder: any = "ASC", destinationcell: str = "", containsheader: bool = False, casesensitive: bool = False, sortcolumns: bool = False): str

### ພາຣາມິເຕີ:

range: ຊ່ວງທີ່ຈະຈັດລຽງ, ໃນຮູບແບບສະຕຣິງ.

sortkeys: ຄ່າສະກາລາ (ຖ້າເປັນ 1 ຖັນ/ແຖວ) ຫຼື ອາເຣຂອງເລກຖັນ/ແຖວ ໂດຍເລີ່ມຈາກ 1.

sortorder: ຄ່າສະກາລາ ຫຼື ອາເຣຂອງສະຕຣິງທີ່ມີຄ່າ "ASC" (ນ້ອຍໄປຫາຫຼາຍ), "DESC" (ຫຼາຍໄປຫານ້ອຍ). ແຕ່ລະລາຍການຈະຖືກຈັບຄູ່ກັບລາຍການທີ່ກົງກັນໃນ sortkeys. ຖ້າອາເຣ sortorder ສັ້ນກວ່າ sortkeys, ຄີທີ່ເຫຼືອຈະຖືກຈັດລຽງແບບ "ASC".

destinationcell: ເຊລປາຍທາງຂອງຊ່ວງເຊລທີ່ຈັດລຽງແລ້ວ, ໃນຮູບແບບສະຕຣິງ. ຖ້າໃຫ້ມາເປັນຊ່ວງ, ຈະພິຈາລະນາພຽງແຕ່ເຊລເທິງຊ້າຍເທົ່ານັ້ນ. ໂດຍເລີ່ມຕົ້ນ ຊ່ວງຕົ້ນທາງຈະຖືກຂຽນທັບ.

containsheader: ເມື່ອເປັນ True, ແຖວ/ຖັນທຳອິດຈະບໍ່ຖືກຈັດລຽງ.

casesensitive: ສະເພາະການປຽບທຽບສະຕຣິງ. ຄ່າເລີ່ມຕົ້ນ = False

sortcolumns: ເມື່ອເປັນ True, ຖັນຈະຖືກຈັດລຽງຈາກຊ້າຍໄປຂວາ. ຄ່າເລີ່ມຕົ້ນ = False: ແຖວຈະຖືກຈັດລຽງຈາກເທິງລົງລຸ່ມ.

### ຕົວຢ່າງ:

##### ໃນ Basic

        'ຈັດລຽງຊ່ວງຕາມຖັນ A (ນ້ອຍໄປຫຼາຍ) ແລະ C (ຫຼາຍໄປຫານ້ອຍ)
        oDoc.SortRange("A2:J200", Array(1, 3), Array("ASC", "DESC"), CaseSensitive := True)

##### ໃນ Python

        myDoc.SortRange("A2:J200", (1, 3), ("ASC", "DESC"), casesensitive = True)

ຣູທີນ ຫຼື ຕົວລະບຸ Basic ຂອງ ScriptForge ທັງໝົດທີ່ຂຶ້ນຕົ້ນດ້ວຍເຄື່ອງໝາຍຂີດກ້ອງ "_" ແມ່ນສະຫງວນໄວ້ສຳລັບໃຊ້ພາຍໃນ. ພວກມັນບໍ່ໄດ້ມີໄວ້ໃຫ້ໃຊ້ໃນມາໂຄຣ Basic ຫຼື ສະຄຣິບ Python.

ຫົວຂໍ້ທີ່ກ່ຽວຂ້ອງ

ບໍລິການ SFDocuments.Chart

ບໍລິການ SFDocuments.Document

ບໍລິການ ScriptForge.UI

ກະລຸນາສະໜັບສະໜູນພວກເຮົາ!