ການອ່ານ ແລະ ຂຽນຄ່າລົງໃນຊ່ວງ (Ranges)

ເນື້ອໃນ

# ການອ່ານ ແລະ ຂຽນຄ່າລົງໃນຊ່ວງ

ມາໂຄຣໃນ LibreOffice Calc ມັກຈະຈຳເປັນຕ້ອງອ່ານ ແລະ ຂຽນຄ່າ ຈາກ/ລົງໃນ ແຜ່ນງານ. ໜ້າຊ່ວຍເຫຼືອນີ້ອະທິບາຍເຖິງວິທີການຕ່າງໆໃນການເຂົ້າເຖິງແຜ່ນງານ ແລະ ຊ່ວງ ເພື່ອອ່ານ ຫຼື ຂຽນຄ່າຂອງພວກມັນ.

ຕົວຢ່າງທັງໝົດທີ່ສະແດງໃນໜ້ານີ້ສາມາດນຳໃຊ້ໄດ້ທັງໃນ Basic ແລະ Python.

## ການເຂົ້າເຖິງເຊວໃດໜຶ່ງ

ຕົວຢ່າງລຸ່ມນີ້ຈະປ້ອນຄ່າຕົວເລກ 123 ລົງໃນເຊວ "A1" ຂອງແຜ່ນງານປັດຈຸບັນ.

        Dim oSheet as Object
        Dim oCell as Object
        oSheet = ThisComponent.CurrentController.getActiveSheet()
        oCell = oSheet.getCellRangeByName("A1")
        oCell.setValue(123)

ທ່ານສາມາດເຮັດແບບດຽວກັນນີ້ດ້ວຍ Python ໄດ້:

        doc = XSCRIPTCONTEXT.getDocument()
        sheet = doc.getCurrentController().getActiveSheet()
        cell = sheet.getCellRangeByName("A1")
        cell.setValue(123)

ສັງເກດວ່າໃນຕົວຢ່າງກ່ອນໜ້ານີ້ ເຊວຖືກເຂົ້າເຖິງໂດຍໃຊ້ຊື່ຊ່ວງ "A1". ນອກຈາກນັ້ນ ຍັງສາມາດເຂົ້າເຖິງເຊວໂດຍໃຊ້ດັດຊະນີ (indices) ເຊິ່ງປຽບເໝືອນວ່າແຜ່ນງານແມ່ນເມທຣິກຊ໌ (matrix) ທີ່ຖັນ ແລະ ແຖວຖືກນັບເລີ່ມຕົ້ນຈາກສູນ.

ທ່ານສາມາດເຮັດໄດ້ໂດຍໃຊ້ເມທອດ getCellByPosition(colIndex, rowIndex) ເຊິ່ງຮັບຄ່າດັດຊະນີຖັນ ແລະ ແຖວ. ຕົວຢ່າງລຸ່ມນີ້ໃນ Basic ຈະປ່ຽນຄ່າຂໍ້ຄວາມໃນເຊວ "C1" (ຖັນທີ 2, ແຖວທີ 0).

        oSheet = ThisComponent.CurrentController.getActiveSheet()
        oCell = oSheet.getCellByPosition(2, 0)
        oCell.setString("Hello")

ຕົວຢ່າງນີ້ຍັງສາມາດນຳໃຊ້ໃນ Python ໄດ້ດັ່ງນີ້:

        doc = XSCRIPTCONTEXT.getDocument()
        sheet = doc.getCurrentController().getActiveSheet()
        cell = sheet.getCellByPosition(2, 0)
        cell.setString("Hello")

ຄວາມແຕກຕ່າງຫຼັກລະຫວ່າງສະຄຣິບ Python ແລະ Basic ແມ່ນວິທີການເຂົ້າເຖິງວັດຖຸແຜ່ນງານໂດຍໃຊ້ຕົວປ່ຽນບໍລິບົດ XSCRIPTCONTEXT. ຫຼັງຈາກນັ້ນ, ເມທອດ ແລະ ຄຸນສົມບັດທັງໝົດຈະຄືກັນທັງໃນ Basic ແລະ Python.

## ຄ່າ, ຂໍ້ຄວາມ ແລະ ສູດ

ເຊວໃນ Calc ສາມາດມີຄ່າໄດ້ສາມປະເພດ: ຕົວເລກ, ຂໍ້ຄວາມ (strings) ແລະ ສູດ. ແຕ່ລະປະເພດມີເມທອດສຳລັບຕັ້ງຄ່າ (set) ແລະ ດຶງຄ່າ (get) ຂອງຕົນເອງ:

ປະເພດ | Get Method | Set Method
--- | --- | ---
ຕົວເລກ | getValue() | setValue(newValue)
ຂໍ້ຄວາມ | getString() | setString(newString)
ສູດ | getFormula() | setFormula(newFormula)

ວັນທີ ແລະ ຄ່າສະກຸນເງິນ ຖືກຖືວ່າເປັນຄ່າຕົວເລກໃນ Calc.

ຕົວຢ່າງຕໍ່ໄປນີ້ຈະປ້ອນຄ່າຕົວເລກລົງໃນເຊວ "A1" ແລະ "A2" ແລະ ແຊກສູດໃນເຊວ "A3" ທີ່ສົ່ງຄືນຜົນຄູນຂອງຄ່າເຫຼົ່ານີ້.

        oSheet = ThisComponent.CurrentController.getActiveSheet()
        oCell = oSheet.getCellRangeByName("A1")
        oCell.setValue(10)
        oCell = oSheet.getCellRangeByName("A2")
        oCell.setValue(20)
        oCell = oSheet.getCellRangeByName("A3")
        oCell.setFormula("=A1*A2")

## ການເຂົ້າເຖິງຊ່ວງໃນແຜ່ນງານຕ່າງກັນ

ຕົວຢ່າງກ່ອນໜ້ານີ້ໃຊ້ສະເພາະແຜ່ນງານທີ່ກຳລັງໃຊ້ງານຢູ່ (active sheet) ເພື່ອດຳເນີນການ. ທ່ານສາມາດເຂົ້າເຖິງຊ່ວງເຊວໃນແຜ່ນງານອື່ນໆ ໂດຍໃຊ້ດັດຊະນີ ຫຼື ຊື່ຂອງພວກມັນ.

ຕົວຢ່າງລຸ່ມນີ້ຈະປ້ອນຄ່າຕົວເລກລົງໃນເຊວ "A1" ຂອງແຜ່ນງານທີ່ຊື່ວ່າ "Sheet2".

        oSheet = ThisComponent.Sheets.getByName("Sheet2")
        oCell = oSheet.getCellRangeByName("A1")
        oCell.setValue(123)

ຕົວຢ່າງນີ້ຍັງສາມາດນຳໃຊ້ໃນ Python ໄດ້ດັ່ງນີ້:

        doc = XSCRIPTCONTEXT.getDocument()
        sheet = doc.Sheets["Sheet2"]
        cell = sheet.getCellRangeByName("A1")
        cell.setValue(123)

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

ໃນ Basic, ແທນທີ່ຈະໃຊ້ເມທອດ getByName, ໃຫ້ໃຊ້ Sheets(sheetIndex) ດັ່ງທີ່ສະແດງຕໍ່ໄປນີ້:

        oSheet = ThisComponent.Sheets(0)

ທ່ານສາມາດເຮັດແບບດຽວກັນນີ້ໃນ Python ໄດ້:

        sheet = doc.Sheets[0]

## ການໃຊ້ຄັງໜັງສື ScriptForge

ບໍລິການ Calc ຂອງຄັງໜັງສື ScriptForge ສາມາດໃຊ້ເພື່ອດຶງ ແລະ ຕັ້ງຄ່າເຊວໄດ້ດັ່ງນີ້:

        ' ໂຫລດຄັງໜັງສື ScriptForge
        GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
        ' ເຂົ້າເຖິງເອກະສານ Calc ປັດຈຸບັນ
        oDoc = CreateScriptService("Calc")
        ' ຕັ້ງຄ່າຂອງເຊວ A1 ແລະ A2
        oDoc.setValue("A1", "Hello")
        oDoc.setValue("A2", 123)

ເມທອດ setValue ສາມາດໃຊ້ເພື່ອຕັ້ງຄ່າໄດ້ທັງຕົວເລກ ແລະ ຂໍ້ຄວາມ. ເພື່ອຕັ້ງສູດໃຫ້ເຊວ, ໃຫ້ໃຊ້ເມທອດ setFormula.

ດ້ວຍບໍລິການ Calc, ການດຶງ ແລະ ຕັ້ງຄ່າເຊວສາມາດເຮັດໄດ້ດ້ວຍໂຄ້ດພຽງແຖວດຽວ. ຕົວຢ່າງລຸ່ມນີ້ຈະດຶງຄ່າຈາກເຊວ "A1" ແລະ ສະແດງໃນກ່ອງຂໍ້ຄວາມ.

        Dim val as Variant, oDoc as Object
        oDoc = CreateScriptService("Calc")
        val = oDoc.getValue("A1")
        MsgBox val

ຄັງໜັງສື ScriptForge ຍັງຊ່ວຍໃຫ້ການເຂົ້າເຖິງຊ່ວງໃນແຜ່ນງານຕ່າງກັນເຮັດໄດ້ງ່າຍຂຶ້ນ ດັ່ງທີ່ສະແດງໃນຕົວຢ່າງລຸ່ມນີ້:

        Dim val1, val2
        ' ດຶງຂໍ້ມູນເຊວ "A1" ຈາກແຜ່ນງານທີ່ຊື່ວ່າ "Sheet1"
        val1 = oDoc.getValue("Sheet1.A1")
        ' ດຶງຂໍ້ມູນເຊວ "B3" ຈາກແຜ່ນງານທີ່ຊື່ວ່າ "Sheet2"
        val2 = oDoc.getValue("Sheet2.B3")
        ' ວາງຜົນລັບລົງໃນເຊວ "A1" ຂອງແຜ່ນງານ "Report"
        Dim result : result = val1 * val2
        oDoc.setValue("Report.A1", result)

ຕົວຢ່າງຂ້າງເທິງນີ້ຍັງສາມາດນຳໃຊ້ໃນ Python ໄດ້ດັ່ງນີ້:

        from scriptforge import CreateScriptService
        doc = CreateScriptService("Calc")
        doc.setValue("A1", "Hello")

        doc = CreateScriptService("Calc")
        bas = CreateScriptService("Basic")
        val = doc.getValue("A1")
        bas.MsgBox(val)

        first_val = doc.getValue("Sheet1.A1")
        second_val = doc.getValue("Sheet2.B3")
        result = first_val * second_val
        doc.setValue("Report.A1", result)

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

ຄັງສຳນວນ ScriptForge

ບໍລິການ SFDocuments.Calc

ການຂຽນໂປຣແກຣມດ້ວຍສະຄຣິບ Python

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