การประมวลผลรายงานเป็นชุด
สร้างรายงานโดยอัตโนมัติ
การประมวลผลรายงานเป็นชุด เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
การทำรายงานซ้ำ ๆ โดยอัตโนมัติ
ประโยชน์สำคัญของ openpyxl คือการทำงานอัตโนมัติ นั่นคือการสร้างรายงานที่คล้ายกันจำนวนมากโดยไม่ต้องทำด้วยตนเอง เช่น แผ่นงานยอดขายรายเดือนแยกตามภูมิภาค หรือไฟล์สรุปแยกตามลูกค้า
รูปแบบการทำงานคือ วนซ้ำในกลุ่มข้อมูล สร้างสมุดงานสำหรับแต่ละกลุ่ม แล้วบันทึกด้วยชื่อที่ไม่ซ้ำกัน
การจัดกลุ่มข้อมูล
รายงานแบบชุดเริ่มต้นจากการจัดกลุ่มระเบียน เช่น จัดกลุ่มตามภูมิภาค Python มาตรฐานจัดการขั้นตอนนี้ได้อย่างเป็นระเบียบก่อนเริ่มทำงานกับ Excel
records = [
{'region': 'North', 'sales': 100},
{'region': 'South', 'sales': 80},
{'region': 'North', 'sales': 120},
]
groups = {}
for r in records:
groups.setdefault(r['region'], []).append(r['sales'])
for region, sales in groups.items():
print(region, sales, 'total', sum(sales))หนึ่งไฟล์ต่อหนึ่งกลุ่ม
สำหรับแต่ละกลุ่ม ให้สร้างสมุดงาน เขียนแถวข้อมูล แล้วบันทึกด้วยชื่อที่สร้างจากคีย์ของกลุ่ม เนื้อหาภายในการวนซ้ำใช้โค้ดเดียวกับที่เขียนสำหรับรายงานเดี่ยว เพียงทำซ้ำ
ชื่อไฟล์ที่ปลอดภัย
คีย์ของกลุ่มอาจมีอักขระที่ใช้ในชื่อไฟล์ไม่ได้ ให้ทำความสะอาดก่อน เพื่อไม่ให้การบันทึกล้มเหลว แนวคิดนี้เหมือนกับการสร้างชื่อย่อที่ปลอดภัยซึ่งใช้ในส่วนอื่น
import re
name = 'North/West Region 2024'
safe = re.sub(r'[^A-Za-z0-9]+', '_', name).strip('_')
print('report_' + safe + '.xlsx')ฟังก์ชันแม่แบบที่นำกลับมาใช้ใหม่ได้
แยกโครงร่างรายงานออกมาเป็นฟังก์ชันเดียวที่รับข้อมูลและส่งคืนสมุดงาน การเรียกใช้ฟังก์ชันนี้ในการวนซ้ำช่วยให้รายงานทุกฉบับมีรูปแบบสอดคล้องกันและทำให้โค้ดเป็น DRY (อย่าทำซ้ำตัวเอง)
ฟังก์ชันนี้จะกำหนดหัวตาราง เขียนแถวข้อมูล เพิ่มผลรวมและสไตล์ แล้วส่งคืน wb
การเพิ่มแถวสรุป
รายงานส่วนใหญ่มักลงท้ายด้วยผลรวม ให้คำนวณค่ารวมใน Python หรือใช้สูตร Excel แล้วเขียนค่าเหล่านั้นเป็นแถวสุดท้าย ในที่นี้เราจะคำนวณค่าสรุป
sales = [100, 120, 90, 110]
summary = {
'count': len(sales),
'total': sum(sales),
'average': sum(sales) / len(sales),
'max': max(sales),
}
for k, v in summary.items():
print(k.ljust(8), v)หลายแผ่นงานในไฟล์เดียว
บางครั้งการใช้ไฟล์เดียวที่มีแผ่นงานแยกตามกลุ่มก็ดีกว่าการใช้หลายไฟล์ ให้วนซ้ำไปตามกลุ่มและเรียกใช้ wb.create_sheet(title=group_name) จากนั้นเขียนข้อมูลของแต่ละกลุ่มลงในแผ่นงานของกลุ่มนั้น แล้วบันทึกไฟล์เพียงครั้งเดียวเมื่อเสร็จสิ้น
การจัดระเบียบโฟลเดอร์ผลลัพธ์
เขียนรายงานลงในไดเรกทอรีผลลัพธ์ที่ระบุวันที่ เพื่อไม่ให้การทำงานแต่ละครั้งเขียนทับกัน ใช้ os.makedirs(path, exist_ok=True) เพื่อสร้างไดเรกทอรีอย่างปลอดภัย แล้วนำชื่อไฟล์มาต่อเข้ากับไดเรกทอรีนั้น
import os
base = 'reports'
run_date = '2026-05-30'
out_dir = os.path.join(base, run_date)
path = os.path.join(out_dir, 'north.xlsx')
print('Would create dir:', out_dir)
print('File path:', path)การจัดการข้อผิดพลาดในชุดงาน
ในชุดงานที่ใช้เวลานาน กลุ่มที่มีปัญหาเพียงกลุ่มเดียวไม่ควรทำให้ส่วนที่เหลือหยุดทำงาน ให้ครอบรายงานแต่ละรายการด้วย try/except บันทึกข้อผิดพลาด แล้วทำงานต่อ การทำงานที่เสร็จสิ้นเพียงบางส่วนยังดีกว่าการทำงานทั้งหมดที่หยุดลงกลางคัน
การตั้งเวลางาน
เมื่อสคริปต์ทำงานได้แล้ว ให้ตั้งเวลาให้สคริปต์ทำงานทุกคืนหรือทุกเดือนด้วย cron, ตัวจัดตารางงาน หรือระบบผสานรวมต่อเนื่อง จากนั้นโค้ดเดิมจะสร้างรายงานล่าสุดโดยอัตโนมัติ โดยไม่ต้องมีคนคอยดำเนินการ
การบันทึกความคืบหน้า
ชุดงานที่ใช้เวลานานจะได้ประโยชน์จากการแสดงความคืบหน้า ให้พิมพ์หรือบันทึกว่ากำลังประมวลผลกลุ่มใดและเหลืออีกกี่กลุ่ม เพื่อให้แยกได้ว่าการทำงานช้าหรือหยุดค้าง ตัวนับอย่างง่ายเทียบกับจำนวนทั้งหมดก็เพียงพอ
การบันทึกเหตุการณ์ยังช่วยเก็บหลักฐานว่ารายงานใดทำสำเร็จแล้ว หากจำเป็นต้องทำงานซ้ำเฉพาะรายการที่ล้มเหลว
ตรวจสอบอย่างรวดเร็ว
ทดสอบความรู้เกี่ยวกับการทำงานอัตโนมัติของชุดงาน
สรุปทบทวน
ขณะนี้คุณสามารถทำให้การสร้างรายงานเป็นแบบอัตโนมัติได้แล้ว:
- จัดกลุ่มข้อมูล แล้ววนซ้ำเพื่อสร้างสมุดงานหนึ่งเล่ม (หรือแผ่นงานหนึ่งแผ่น) ต่อกลุ่ม
- แยกการจัดวางไว้ในฟังก์ชันแม่แบบที่นำกลับมาใช้ซ้ำได้
- ทำชื่อไฟล์ให้ปลอดภัยและเขียนไฟล์ลงในโฟลเดอร์ผลลัพธ์ที่ระบุวันที่
- เพิ่มแถวสรุป ครอบรายงานแต่ละรายการด้วย try/except และตั้งเวลาให้สคริปต์ทำงาน
วิธีนี้เปลี่ยนงานสเปรดชีตที่ต้องทำด้วยตนเองหลายชั่วโมงให้กลายเป็นงานที่เรียกใช้ด้วยคำสั่งเดียว
คำถามที่พบบ่อย
บทเรียน “การประมวลผลรายงานเป็นชุด” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การประมวลผลรายงานเป็นชุด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การประมวลผลรายงานเป็นชุด”
สร้างรายงานโดยอัตโนมัติ คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การประมวลผลรายงานเป็นชุด” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม
ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การอ่านเวิร์กบุ๊ก
- การเขียนและจัดรูปแบบเซลล์
- สูตรและกราฟ
- การประมวลผลรายงานเป็นชุด