31 ตุลาคม 2558

Published 10/31/2558 by with 0 comment

ทำ Template เอกสาร docx ด้วย docxtpl ในภาษาไพทอน

ในการทำงานเอกสารส่วนใหญ่ โปรแกรมยอดนิยมในการพิมพ์เอกสารในไทยตอนนี้ คือ โปรแกรม Microsoft Office Word ใช้งานกันมากทั้งภาครัฐ ภาคเอกชน และภาคการศึกษาไทย  หลาย ๆ ท่านคงเคยเจอปัญหาพิมพ์งานเอกสาร docx หลาย ๆ ไฟล์แต่ปรับเปลี่ยนข้อมูลเพียงบางส่วนเท่านั้น (ในงานธุรการของโรงเรียนต่าง ๆ มักเจอปัญหานี้กัน) ทำให้มีความยุ่งยากและเสียเวลาในการหาไฟล์และก็อปไฟล์ เปิดโปรแกรม เพื่อแก้ไขและเพิ่มข้อมูลที่มีรูปแบบซ้ำซ้อนกัน บทความนี้ผมจะพาผู้อ่านไปลองทำ Template เอกสาร docx ด้วย docxtpl ในภาษาไพทอนกันครับ
Python อ่านว่า ไพทอน ไม่ใช่ ไพธอน (จากระบบสะกดคำของกูเกิลและวิกิพีเดีย)

โมดูล docxtpl เป็นโมดูลระบบ docx template engine ในภาษาไพทอน โดยได้ใช้ jinja2 template เป็นไวยากรณ์สำหรับใช้กำหนดพื้นที่ template ในไฟล์ docx
License: LGPL 2.1
รองรับทั้ง Python 2 และ Python 3

สามารถติดตั้งได้จากคำสั่ง pip :
pip install docxtpl

บทความนี้ผมจะพาผู้อ่านไปลองใช้งาน Template ของไฟล์ docx ด้วย docxtpl กันครับ
ให้ทำการเปิดโปรแกรม Microsoft Office Word ขึ้นมาแล้วทำการออกแบบ Template



กำหนดพื้นที่สำหรับใช้เป็น Template ได้โดยการพิมพ์โค้ด
{{ ตัวแปรที่ต้องการ(ภาษาอังกฤษ) }}

ผมทำการกำหนดพื้นที่ใส่ข้อมูลชื่อที่ต้องการเป็น Template ด้วยโค้ด

[python]
{{ name }}[/python]

ออกแบบ Template และกำหนดพื้นที่  Template แล้ว ทำการบันทึกไฟล์

ออกแบบ Template และกำหนดพื้นที่ Template แล้ว ทำการบันทึกไฟล์ ผมตั้งชื่อว่า tpl.docx
เสร็จแล้วทำการสร้างไฟล์โค้ด python ขึ้นมา

[python]
from docxtpl import DocxTemplate

doc = DocxTemplate("tpl.docx") # ดึงไฟล์ Template เข้ามา
name = input("Your Name : ") # รับข้อมูลชื่อเข้ามา
context = { 'name' : name}
doc.render(context) # เพิ่มข้อมูลลงไฟล์
doc.save("generated_doc.docx") # ส่งออกข้อมูลในไฟล์ใหม่ชื่อ generated_doc.docx[/python]

ทำการบันทึกไฟล์ไพทอนไว้ในโฟลเดอร์เดียวกันกับไฟล์ tpl.docx

เมื่อรันโค้ดไพทอนที่เขียน แล้วจะได้ไฟล์ generated_doc.docx ขึ้นมา



ไฟล์ generated_doc.docx จากการทำ Template เอกสาร docx ด้วย docxtpl ในภาษาไพทอน

อ่านเอกสารการใช้งาน docxtpl เพิ่มเติมได้ที่ http://docxtpl.readthedocs.org/

ลองนำไปประยุกต์ใช้งานกันดูนะครับ
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

The Python 3 Thai Blog.

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)