23 ก.ค. 2022 เวลา 11:10 • วิทยาศาสตร์ & เทคโนโลยี
วิธีเปลี่ยน .xlsx เป็น .csv โดยใช้ script
เนื่องจากผมได้รับมอบหมายงานให้อัพข้อมูลดิบขึ้นเซิฟเวอร์ ความอิบอายจึงบังเกิด เนื่องจากยังไม่ค่อยรู้อะไรมากเกี่ยวกับด้านนี้
ซึ่งข้อมูลดิบที่ว่าถูกเก็บอยู่ใน excel (.xlsx) ซึ่งข้อมูลมีเป็นแสนแถว พันคอลัมน์ เวลา read_excel มันนานมาก เพื่อนผมจึงกล่าวไว้ว่า “มึงก็ read_csv แทนสิวะ” ผมก็เลยลองหาวิธีดู พบว่าอันนี้เจ๋งดีครับผม
แต่ก่อนไปตรงนั้นขอเพิ่มการอธิบายของฟังก์ชั่น ‘map’ จากบทความที่แล้วหน่อยนะครับ คือ map มันประมาณว่า “การวนแต่ละตัวใน list โดย return ค่าจากฟังก์ชั่นที่เราใส่เข้าไป”
ต้องขอสรุปภาพรวมคร่าวๆ ให้เข้าใจก่อนนะครับ ใจความมีดังนี้
- เขียน vb script อธิบายลวกๆ ก็เหมือนเรารัน code VBA แต่เราไม่ได้เปิด excel application เพื่อรัน code ครับ โดยเราจะรันผ่านระบบ os อีกที (อธิบายไม่ถูกหลักจริงๆ ต้องขออภัยด้วยนะครับ)
- raw data.xlsx
- Run Power Shell ให้ถูกที่ (มี .vbs อยู่ในที่นั้นๆ)
เอาล่ะ มาเริ่มกันเลยดีกว่า
ให้ท่านก็อบ code ชุดนี้ไปแปะใน notepad ครับผม คำสั่งชุดนี้มันประมาณว่า open excel > save as csv ประมาณนั้นครับผม
Set objArgs = WScript.Arguments
InputName = objArgs(0)
OutputName = objArgs(1)
Set objExcel = CreateObject(“Excel.application”)
objExcel.application.visible=false
objExcel.application.displayalerts=false
set objExcelBook = objExcel.Workbooks.Open(InputName)
objExcelBook.SaveAs OutputName, 23
objExcel.Application.Quit
objExcel.Quit
ก็อบวางเสร็จปุ๊บให้ กด save as โดยที่ เลือกสกุลไฟล์ว่า All files* จากนั้นเปลี่ยนหลังจุดจาก txt เป็น vbs ดังรูป
จากนั้นก็กด save ซึ่งปกติไฟล์ text มันจะขึ้นเป็นเหมือนเอกสาร แต่ถ้า vbs จะเป็นไอคอนแบบนี้แทน
จากนั้นไปที่ๆ เราเก็บ raw data.xlsx ไว้เลยครบ เพื่อรัน code ครับผม
เช่น ผมย้ายมาเก็บไว้ในโฟลเดอร์ชื่อว่า test_csv นะครับ โดย raw data ของผมชื่อ “Source_Test.xlsx” ครับ 👍
ข้างในหน้าตาแบบนี้ 💪
ซึ่งเดียวเรามาดูกันว่าหลังจากรันสคริปไปแล้ว หน้าตาจะเปลี่ยนไปยังไงกันบ้าง แต่ก่อนรันเราต้อง Open Power Shell ให้ถูกที่ก่อนนะครับ 🤤
โดยการกด Shift + คลิกขวาลงบนสักที่ ที่มี vbs files อยู่ครับ
จะได้หน้าต่างแบบนี้ขึ้นมาครับผม แต่บางคนอาจจะรันบน cmd นะครับ แต่ก็ต้องเปลี่ยน location ในการเรียกใช้งานเหมือนกันครับ
จากนั้นก็พิมพ์คำสั่งรัน vbs ไปเลยครับ โดยจะมีอยู่ 3 ส่วนด้วยกัน นั่นคือ
(./[vbs files name], [location+name_files.xlsx], [location+name_files.csv])
เขียนจริงไม่มีคอมม่า (,) นะครับ แต่เว้นวรรคเอา
ตัวอย่างเช่น
จากรูป ปกติคอมต้องใช้ \ (back slash) นะครับ แต่คอมผมเท่ห์เลยใช้เป็น ตัว Y แทน
ซึ่งหลังจากกด Enter หลังเขียนคำสั่งเสร็จก็ได้
โดยหน้าตาข้างในจะเป็นแบบนี้ครับ ซึ่งมันคือ format csv ปกติครับผม
เพียงเท่านี้ก็ได้มาแล้ว files.csv จากการแปลง files.xlsx โดยใช้ script
ซึ่งจริงๆ ผมนำกระบวนวิธีการแบบนี้ไปใช้ต่อร่วมกับ python อีกทีครับ ซึ่งถ้ามีเวลาจะมาลงการเขียน code กากๆ จากผมได้ครับในบทความถัดๆ ไป
เป็นไงการบ้างครับ หวังว่าจะช่วยได้บ้างไม่มากก็น้อยนะครับ
โฆษณา