Computer >> Máy Tính >  >> Lập trình >> Python

Làm cách nào để tạo đoạn văn Microsoft Word và chèn hình ảnh bằng Python?

Giới thiệu ...

Là một chuyên gia về Kỹ thuật dữ liệu, tôi thường nhận được kết quả kiểm tra từ những người kiểm tra trong Microsoft word. Thở dài! họ đưa rất nhiều thông tin vào tài liệu word ngay từ khi chụp ảnh màn hình và các đoạn văn rất lớn.

Một ngày khác, tôi đã được nhóm thử nghiệm yêu cầu giúp họ một chương trình để chèn Văn bản và hình ảnh do công cụ tạo ra (được chụp bằng ảnh chụp màn hình tự động. Không được đề cập trong bài viết này).

Không giống như các tài liệu khác, tài liệu MS Word không có khái niệm về trang, vì nó hoạt động trong các đoạn văn, vì vậy chúng ta cần sử dụng các dấu ngắt và các phần để phân chia tài liệu một cách hợp lý.

Cách thực hiện ..

1. Tiếp tục và cài đặt python-docx.

import docx

# create a new couments
WordDocx = docx.Document()

# My paragraph.
Paragraph = WordDocx.add_paragraph('1. Hello World, Some Sample Text Here...')
run = Paragraph.add_run()

# paragraph with a line break
run.add_break(docx.text.run.WD_BREAK.LINE)

# Add more
Paragraph.add_run('2. I have just written my 2nd line and I can write more..')

# Finally savind the document.
WordDocx.save('My_Amazing_WordDoc.docx')

2.Bây giờ Hãy kiểm tra nội dung xem mọi thứ có ổn hay không. Bạn là lập trình viên, vì vậy chúng tôi sẽ làm điều đó theo chương trình.

doc = docx.Document('My_Amazing_WordDoc.docx')
print(f"output \n *** Document has {len(doc.paragraphs)} - paragraphs")
for paragraph_number, paragraph in enumerate(doc.paragraphs):
if paragraph.text:
print(f"\n {paragraph.text}")

Đầu ra

*** Document has 1 - paragraphs

1. Hello World, Some Sample Text Here...
2. I have just written my 2nd line and I can write more..

3.Bây giờ chúng tôi sẽ thêm một hình ảnh vào tài liệu của chúng tôi. Vì vậy, trước tiên chúng ta cần tìm kiếm một hình ảnh. Tôi đã tải xuống một hình ảnh từ unsplash.com mà không có bất kỳ vấn đề bản quyền nào. Vui lòng đảm bảo rằng mọi thứ bạn tải xuống từ internet sẽ thực hiện một cách cẩn thận nhất.

Unsplash có hình ảnh miễn phí bản quyền, chúng tôi có thể sử dụng cho bất kỳ mục đích nào, đánh giá cao công việc của họ.

Được rồi, tôi đã tải xuống một hình ảnh và đặt tên là Tree.img, hình ảnh này sẽ được thêm vào tài liệu của chúng tôi.

import requests
from docx.shared import Cm

# Download the image from Github
response = requests.get("https://raw.githubusercontent.com/sasankac/TestDataSet/master/Tree.jpg")
image = open("Tree.jpg", "wb")
image.write(response.content)
image.close()

# add the image
image_to_add = doc.add_picture("Tree.jpg")
print(f"output \n *** MY Image has width = {image_to_add.width} and Height as - {image_to_add.height}")

Đầu ra

*** MY Image has width = 43891200 and Height as - 65836800

4.Chúng tôi cần phải chia tỷ lệ hình ảnh phù hợp vì Hình ảnh của tôi quá lớn. chúng ta có thể sử dụng tham số chiều rộng và chiều cao.

image_to_add.width = Cm(10)
image_to_add.height = Cm(10)
print(f" *** My New dimensions Image has width = {image_to_add.width} and Height as - {image_to_add.height}")

# finally save the document
doc.save('report.docx')


*** My New dimensions Image has width = 3600000 and Height as - 3600000

5.Mở tài liệu và bạn sẽ thấy hình ảnh và văn bản được thêm vào.

6. ghép mọi thứ lại với nhau.

Ví dụ

import requests
from docx.shared import Cm

# Download the image from Github
response = requests.get("https://raw.githubusercontent.com/sasankac/TestDataSet/master/Tree.jpg")
image = open("Tree.jpg", "wb")
image.write(response.content)
image.close()

# add the image
image_to_add = doc.add_picture("Tree.jpg")
print(f"output \n *** MY Image has width = {image_to_add.width} and Height as - {image_to_add.height}")

image_to_add.width = Cm(10)
image_to_add.height = Cm(10)
print(f" *** My New dimensions Image has width = {image_to_add.width} and Height as - {image_to_add.height}")

# finally save the document
doc.save('report.docx')

Đầu ra

*** MY Image has width = 43891200 and Height as - 65836800
*** My New dimensions Image has width = 3600000 and Height as - 3600000

Làm cách nào để tạo đoạn văn Microsoft Word và chèn hình ảnh bằng Python?