pip install pywin32
client
โดยเวลาจะใช้ควรสั่ง import แบบนี้import win32com.client
from win32com.client import Dispatch
import win32com
แบบนี้จะไม่สามารถใช้ win32com.client ได้ ต้องระวังด้วยimport win32com
win32com.client # ได้ AttributeError: module 'win32com' has no attribute 'client'
Dispatch
ดังนั้นจะแค่ from win32com.client import Dispatch
ทั้งหมดเพื่อความง่ายfrom win32com.client import Dispatch
app = Dispatch('Word.Application')
app.visible = True
doc = app.Documents.Add()
doc.Content.Text = 'ราชาวีรชน เกิดใหม่เพื่อขัดเกลาวิถีต่อสู้\nและกลายเป็นอัศวินฝึกหัดที่แกร่งสุดในโลก♀'
Dispatch
ขึ้น โดยใส่ 'Word.Application'
หมายถึงต้องการเปิดไฟล์เวิร์ด (ถ้าหากต้องการเปิดเอ็กซ์เซลก็เปลี่ยนเป็น 'Excel.Application'
เป็นต้น)app.visible = True
นั้นหมายถึงว่าให้เปิดมาในโหมดที่ขึ้นหน้าต่างมาให้เรามองเห็นด้วยได้ ถ้าไม่ได้ใส่โปรแกรมก็จะถูกเปิดขึ้นมาเบื้องหลัง เราจะมองไม่เห็น และไม่สามารถปิดหน้าต่างโดยตรงได้ด้วยdoc = app.Documents.Add()
หมายถึงสร้างหน้ากระดาษใหม่ขึ้นมาเป็นหน้าเปล่าๆdoc.Content.Text
นั้นคือตัวข้อความภายในหน้ากระดาษ เราสามารถป้อนข้อความที่ต้องการเขียนเข้าไปได้โดยตรงเลย ข้อความก็จะมาปรากฏในหน้ากระดาษตามนั้น ที่จริงแล้วมีรายละเอียดมากกว่านี้อีก เช่นกำหนดย่อหน้า ปรับขนาดหรือสีหรือฟอนต์ของอักษร แต่ในที่นี้แค่แสดงให้เห็นตัวอย่างการใช้ง่ายๆ.SaveAs()
โดยใส่ชื่อไฟล์ที่ต้องการบันทึกลงไป เช่นfrom win32com.client import Dispatch
app = Dispatch('Word.Application')
doc = app.Documents.Add()
doc.Content.Text = 'เพราะพระเจ้าเลือกเลยได้เกิดใหม่มาเลี้ยงสไลม์ในต่างโลก'
doc.SaveAs(r'พระเจ้าเลือก.docx')
doc.Close()
app.Quit()
doc.Close()
และ app.Quit()
เพื่อทำการปิดทุกอย่างลงหลังจากที่บันทึกเรียบร้อยแล้วapp.visible = True
ก็ได้ แล้วก็จะเห็นเวิร์ดถูกเปิดขึ้นมาก่อนจะถูกปิดไป แต่ก็ไม่จำเป็นถ้าไม่ได้ต้องการเห็นหน้าต่างมันขึ้นมาระหว่างดำเนินการอยู่.Documents.Open()
from win32com.client import Dispatch
app = Dispatch('Word.Application')
app.visible = True
doc = app.Documents.Open(r'พระเจ้าเลือก.docx')
.SaveAs
นั้นนอกจากจะใช้บันทึกไฟล์เป็นไฟล์เวิร์ดธรรมดาแล้วยังอาจใช้บันทึกเป็นไฟล์ชนิดต่างๆซึ่งสามารถเลือกได้ ทำได้โดยการเติมตัวเลขระบุชนิดของไฟล์ที่ต้องการไปข้างหลัง เช่นถ้าต้องการบันทึกเป็น pdf ก็ใส่เลข 17from win32com.client import Dispatch
docx_file = r'shougayaki.docx' # ไฟล์เวิร์ดที่ต้องการแปลง
pdf_file = r'หมูย่างซอสขิง.pdf' # ชื่อไฟล์ pdf ที่ต้องการ
app = Dispatch('Word.Application')
doc = app.Documents.Open(docx_file) # เปิดไฟล์เวิร์ดขึ้นมา
doc.SaveAs(pdf_file,17) # บันทึกเป็น pdf
doc.Close() # บันทึกเสร็จแล้วก็ปิดด้วย
app.Quit()
.ExportAsFixedFormat()
แทน สามารถใช้เพื่อบันทึกเป็น pdf ได้from win32com.client import Dispatch
excel_file = r'pot-au-feu.xlsx' # ไฟล์เอ็กซ์เซลที่ต้องการแปลง
pdf_file = r'ปอโตเฟอ.pdf' # ชื่อไฟล์ pdf ที่ต้องการบันทึก
app = Dispatch('Excel.Application')
wb = app.Workbooks.Open(excel_file)
wb.ExportAsFixedFormat(0,pdf_file)
wb.Close()
app.Quit()
.SaveAs()
เพื่อทำการบันทึกไฟล์เป็น pdf ได้เช่นเดียวกับกรณีเวิร์ด เพียงแต่เลขรหัสสำหรับแปลงเป็น pdf นั้นคือ 32 ระหว่างอย่างสับสนกับของเวิร์ดfrom win32com.client import Dispatch
ppt_file = r'karaage.pptx' # ไฟล์พาวเวอร์พอยต์ที่ต้องการแปลง
pdf_file = r'คาราอาเงะ.pdf' # ชื่อไฟล์ pdf ที่ต้องการบันทึก
app = Dispatch('Powerpoint.Application')
ppt = app.Presentations.Open(ppt_file)
ppt.SaveAs(pdf_file,32)
ppt.Close()
app.Quit()
.SaveAs()
ของพาวเวอร์พอยต์นั้นทรงพลังยิ่งกว่าของเวิร์ดหรือเอ็กซ์เซลเสียอีก นั่นเพราะนอกจากจะใช้บันทึกไฟล์เป็น pdf ได้แล้วยังสามารถบันทึกเป็นไฟล์รูปภาพได้เลย โดยแค่เปลี่ยนตัวเลขแทนโหมดเป็นชนิดภาพตามที่ต้องการเท่านั้น มีให้เลือกอยู่หลากหลาย16 | gif |
17 | jpg |
18 | png |
19 | bmp |
21 | tif |
32 |
from win32com.client import Dispatch
ppt_file = r'chikinnanban.pptx' # ไฟล์พาวเวอร์พอยต์ที่ต้องการแปลง
img_path = r'ไก่นัมบัง' # โฟลเดอร์ที่ต้องการเก็บภาพที่ได้จากการแปลง
app = Dispatch('Powerpoint.Application')
ppt = app.Presentations.Open(ppt_file)
ppt.SaveAs(img_path,18)
ppt.Close()
app.Quit()
ติดตามอัปเดตของบล็อกได้ที่แฟนเพจ