ວິທີການຈັດການ record ທີເປັນຊື່ຂອງ File ຂອງ table ໃນ Excel

    ຈາກປະສົບການໂຕຈີງມາໝາດໆ. ເຈົ້າຂອງເອງເນາະ ເຮັດຢູ່ກັບໂປເຈັກໜື່ງ ແອບ android ເຮົາໜີ້ລະ. ມີ concept ຢູວ່າ ມີຮູບຫຼາຍໆຮ້ອຍຮູບ ທີ່ຈະເອົາໄປເກັບໄວ້ໃນແອບ ໂດຍການເກັບກະທົ່ວໆໄປ. ເອົາຮູບໄປໄວ້ Raw folder (ທົ່ວໄປບ່ອນໄດວະ). ແລ້ວ ກະຈັດຊື່ຮູບໄວ້ໃນ SQLite ເພື່ອເອົາໄວ້ເອີ້ນໃຊ້ຕໍ່ໄປ

    ແຕ່ບັນຫາມັນຢູ່ບ່ອນວ່າ ຂໍ້ມູນທີ່ເອົານຳລູກຄ້າເອົາມາ ໜ້າຮັກຫຼາຍ. ຊື່ໄຟພິດໄປຈາກ record ໃນ Excel, ຊື່ໃນ Excel ກັບໄຟຕົວຈີງບໍ່ກົງກັນ (ສົມມຸດວ່າໄຟຊື່ references.xls) ໃນໄຟນີ້ມັນຈະມີ recoeds: file_name, lao_name, description ເປັນຕົ້ນເນາະ ຄ້າວໆ.

    ສະນັ້ນກະເລີຍຢາກຫາວີທີມາແກ້ບັນຫານີ້ ຄືບັນຫາ ຈັດການກັບຂໍ້ມູນໃຫ້ເປັນລະບຽບ ແລະ ຖືກຕ້ອງຕາມຊື່ມັນ. ໂຈດກະປະມານນີ້ (ປລ.ຕົວຈີງມີຮູບເປັນຫຼາຍຮ້ອບຮູບ ເຮັດໃຫ້ຈັດການແບບ manual ໃຊ້ເວລາເປັນມື້ໆ). ບັນຫາແຍກໄດ້ແບບນີ້

  1. ຊື່ໄຟທີມີໃນ records ຫຼາຍກ່ວາໄຟໃນ folder ຕົວຈີງ.
  2. ຊື່ໄຟທີ່ມີໃນ records ກັບໃນ folder ບໍ່ກົງກັນຈຳນວນໜື່ງ.

   ປັນຫາພວກນີ້ ມັນຢາກເກີນບັນຢາຍເລີຍ ກວດເທື່ອລະຮູບຍັງພິດແລ້ວ. ຖ້າໃຜຮູ້ຈັກ tools ດີໆໃຊ້ກະລອດໄປ (experienced user). ແຕ່ຖ້າເປັນ programmer ມືໄໝ່ແບບເຮົານິ ມາລອງ skill ຂຽນໂປແກມກັນດີກວ່າ ແບບ Developer user ກັນ.

ວິທີແກ້ໄຂບັນຫາ.

    ສີ່ງທີ່ເຮົາມີປັດຈຸບັນຄື:

  1. references.xls ທີ່ເກັບຊື່ໄຟແບບ ນຽບນຽນ ຫະຫະ ແຖມ ຊື່ກະຖືກຕ້ອງຕາມໄຟໝົດ ປລ.ກກຂ
  2. folder ທີ່ເກັບໄຟພວກນັ້ນໄວ້ທັງໝົດ. ແຕ່ໂຊກເຂົ້າຂ້າງ ໄຟມີໜ້ອຍກ່ວາຊື້. ແຖມຊື່ບໍ່ຖືກ.

    ທຳອີດຕ້ອງຫາວິທີເກັບກຳຊື່ຂອງໄຟ ທີ່ຖືກຕ້ອງທັງໝົດມາຈາກ folder ເລິຍ. ທຳອີກກະກອບເທື່ອລະໄຟ ເຈົ້າຂອງມືໄວແນ່. ມັ້ງ?. ກົດ F2 + CTRL + C CTRL + V ຈົບຮູບ ໜື່ງ. ແຕ່ແບບນີ້ 100 ຮູບກະ 300 ເທື່ອກົດຕົວ ບໍ່ໄຫວ ຫະຫະ. ປ່ຽນດີກວ່າ. ຫັນມາຂຽນ Code ເອົາ ແຮ່ໆໆ.

    ຕອນມະຫາໄລເຄີຍເອົາ PHP  ອ່ານຊື່ໄຟໃນ Folder ອອກມາ. ຄວາມຄິດມັນກະເລີຍເຂົ້າຫົວ ພໍດີ. ດືງຊື່ຈັ່ງໄດ? ກະງ່າຍໆເລິຍ Code ໜ້ອຍດຽວ ຕາມນນີ້ເລິຍ;

<?php
    foreach (glob(“./Files/*.jpg”) as $filename) {// *.jpg ທຸກໄຟ ທີ່ມີ ext ຫຼື ຊື່ກະກອບດ້ວຍ .jpg
        echo $filename . “<br>”;
    }
?>

    ແຕ່ການ echo ແບບນີ້ ຊື່ໄຟຈະອອກມາທັງ PATH ຂອງຮູບເລີຍ. ເອົາ REGEX function ມາຊ່ວຍດີກ່ວາ ເພື່ອກອງເອົາແຕ່ຮູບໄຟ ບໍ່ລວມ Extension. (ເອົາຮູບໄວ້ android res ເວລາອ່ານ ມັນຈະບໍ່ສົນ Extension ສະນັ້ນເລີຍເກັບແຕ່ຊື່). ກະເລີຍໄດ້ອອກມາແບບນີ້.

<?php
foreach (glob(“./Files/*.jpg”) as $filename) {
    $filename = str_replace(‘./Files/’, ”, $filename);   // ຖ້າໃນຊື່ມີຄຳວ່າ ./Files/ ໃຫ້ປ່ຽນເປັນ ” (ວ່າງ)
    $filename = str_replace(“.jpg”, “”, $filename);   //ເອົາ Extension ມັນອອກ
    echo $filename . “<br>”;
}
?>

    ຢ່າລືມກອບ files ທີ່ຕ້ອງກວດໄປໄວ້ Folder Files/ ໃນ folder www ຂອງ apserv  ປລ.ສຳຄົນໃຊ້ apserv.

    save ແລ້ວ ໄປເປິດໄຟໃນເວັບບາວເຊີ ແລ້ວມັນຈະສະແດງຊື່ຂອງໄຟທັງໝົດທີມີໃນ folder /www/project_name/Files/*.jpg ອອກມາ. ເທົານີ້ກະໄດ້ລະ ຊື່ໄຟທີຕ້ອການ.

    ຕໍ່ໄປເປັນບັນຫາຂອງການ ເອົາ list ຊື່ໄຟທີ່ເຮົາໄດ້ມາໄປສົມທຽບກັບ ຊື່ໄຟທີ່ມີໃນ references.xls ເລິຍ. ໂດຍການປຽນທຽບ ກະຕ້ອງເຮັດແບບ Developer ແນ່ໜ້ອຍໜື່ງ. ກ່ອນຈະໄປຮອດຫັ້ນ ໄປກວດເບີ່ງວ່າ Developer tab ໃນ Excel ເປີດໃຊ້ງານແລ້ວບໍ?. ຫຼື ອ່ານບົດນີ້ເລີຍ ຈາກຂໍ້ມູນໃນ Excel ໃປຫາຂໍ້ມູນໃນ SQlite ໃນແອບ Android ໄດ້ສະເໜີວິທີເປີດ Developer tab in Excel.

    ສະຫຼຸບຄ້າວໆກ່ອນວ່າຮອດໜີ້ເຮົາໄດ້ຫຍັງແນ່:

    1. ໄດ້ ຊື່ໄຟທີ່ຖືກຕ້ອງຕາມໄຟທີມີຢູ່ໃນ Folder ທີ່ເຮົາຕ້ອງການ.

    2. ມິໄຟທີ່ລູກຄ້າສົ່ງໃຫ້ references.xls.

    ທຳອີດ ໃຫ້  copy list ທີ່ໄດ້ຈາກ code PHP ໄປປະໄວ້ໃນ references.xls ກ່ອນເລີຍ, ກ່ອນທີ່ຈະໄປຂຽນ script ເພື່ອກວດສອບວ່າ List ທີ່ໄດ້ມາ ກົງກັນກັບ list ໃນ references.xls ບໍ. (column A ແມ່ນ List ໄດ້ຈາກ PHP ແລ້ວຢາກປຽບທຽບ Column A ກັບ B, ທຽບ B ໃສ່ A ຖ້າ record ຂອງ B ບໍ່ມີໃນ A ລົບຄ່ານັ້ນອອກ).

file name record of many file in a directory

   ຕໍ່ໄປ ກະມາຮອດໂຄດອີກເນາະ ແຕ່ຕອນນີ້ຈະເປັນຂອງຝັ່ງ MS. ເປີດໄຟ references.xls. Developer>Visual Basic ຫຼື ALT + F11 ເພື່ອເປີດ Microsoft Visual Basic for Application ອອກມາ ເພື່ອຂຽນ script ກວດ record 2 column ເຮົາ.

   VB ສຳຫຼັບ Excel ແມ່ນເພື່ອໃຫ້ເຮົາສາມາດພັດທະນາ Feature ຂອງ Excel ໄດ້ຕາມ style ຂອງ Dev ເຮົາ. ເອົາທີ່ສະບາຍໃຈເລິຍ. ກົດ ALT + F11 ແລ້ວຈະມີໜ້າເດັ້ງຂື້ນມາ ແລ້ວຂຽນ Code ໃສ່ນີ້ເລິຍ.

Sub FIND_NOT_MATCH()
    Dim CompareRange As Variant, x As Variant, y As Variant, isMatch As Boolean
    Set CompareRange = Range(“A2:A9”)   // column ທີຈະເອົາໄປປຽບທຽບ
    For Each x In Selection
        isMatch = False
        For Each y In CompareRange
            If Trim(x) = Trim(y) Then isMatch = True  // ຖ້າ Column ທີ່ເຮົາເລືອກ ມີຄ່າໃນ (A2:A9) ໃຫ້ປ່ຽນ bool ເປັນ true
        Next y
        If (isMatch = False) Then x.Offset(0, 0) = “” // ຖ້າ ບໍ່ມີ (false) ໃຫ້ຄ່າ cell x ທີ່ເຮົາເລືອກມີຄ່າວ່າງເປົ່າ.
   Next x
End Sub

    ກົດ SAVE ແລ້ວປິດອອກ. ຖ້າບໍ່ປິດອອກຈະ RUN ບໍ່ໄດ້. ຕໍ່ໄປກະ RUN script ທີ່ຂຽນມາຕອນກີ້ເລິຍ ໂດຍການກົດເລືອກ Column ທີ່ຕ້ອງການ (C2:C10).  ແວບດຽວ ສີ່ທີ່ Column A ບໍ່ມີໃນ C ກໍ່ຈະຫາຍໄປໃນພີບຕາ… ແບບນີ້:

file name record of many file in a directory_result

    Column C ທີ່ບໍ່ມີຄ່າໃນ A2:A9 ຈະຫາຍໄປ (ຄ່າ CC).

    ຖ້າໃນໂຕຈີມັນຈະມີຂໍ້ມູນຫຍັງຫຼາຍກ່ວານີ້ ຖ້າຂາດຫາຍຫຍັງໄປກະເພີ່ມເຕີມໄດ້ຕາມບາຍເລີຍ. ປລ.ລວມທັງ code ແຮ່ໆໆ.

    ສະຫຼຸບ: ໃນການພັດທະນາລະບົບອັນໄດນື່ງ ເຮົາມັກຈະເຈິກັບການຈັດການກັບ resource ຫຼາຍໆແບບນີ້ກັນ. ແນວທາງການແກ້ໄຂກະປະມານວ່າ ໃຫ້ຫາທາງເອົາ list ຊື່ຂອງ resource ມາທັງໝົດແບບຖືກຕ້ອງເປາະ. ແລ້ວຫຼັງຈາກນັ້ນກະເອົາໄປປຽບທຽບກັບ reference ດີໆ ທີລູກຄ້າສົ່ງມານັ້ນເລີຍ ໂດຍການຂຽນ script ໃສ່ Excel ພ່ານ Developer menu ໂດຍທີຊື່ວ່າ Macro (Microsoft Visual Basic Application). ເພີ່ມເຕີມເວລາໄປຫາອ່ານເບີ່ງກ່ຽວກັບ Macro ຮູ້ສືກວ່າມັນເຂົ້າໃຈງ່າຍດີ ພວກຮຽນ JS ໜ້າຈະເຂົ້າໃຈໄວກ່ວາໝູ່…. 

Share via

Leave a Reply

Specify GooglePlus Client ID in Super Socializer > Social Login section in admin panel for GooglePlus Login to work