PythonでWord文書の段落を作成し、画像を挿入する方法
はじめに
データエンジニアリングのスペシャリストとして、テスターからMicrosoft Word形式のテスト結果を受け取ることがよくあります。ため息が出るほど…スクリーンショットや非常に長い段落など、大量の情報をWord文書に詰め込んでくるのです。
先日、テストチームから「ツールが生成したテキストと画像(自動スクリーンショットで取得したもの。本記事では扱いません)を文書に挿入するプログラム」の作成を依頼されました。
MS Wordは他のドキュメント形式と異なり、ページという概念を持たず、残念ながら段落ベースで動作します。そのため、改行(ブレーク)やセクションを活用して、文書を適切に分割する必要があります。
実装手順
1. python-docxのインストール
まずはpython-docxライブラリをインストールしましょう。
import docx
# 新しいドキュメントを作成
WordDocx = docx.Document()
# 段落を追加
Paragraph = WordDocx.add_paragraph('1. Hello World, Some Sample Text Here...')
run = Paragraph.add_run()
# 改行を含む段落
run.add_break(docx.text.run.WD_BREAK.LINE)
# さらにテキストを追加
Paragraph.add_run('2. I have just written my 2nd line and I can write more..')
# 最後にドキュメントを保存
WordDocx.save('My_Amazing_WordDoc.docx')
2. 文書内容の確認
次に、すべて正しく記述されているか確認しましょう。プログラマーですから、もちろんプログラムで確認します。
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}")
出力結果
*** 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. 画像の追加
続いて、文書に画像を追加します。まずは画像を用意する必要があります。ここでは、著作権の問題がないunsplash.comから画像をダウンロードしました。インターネットからファイルをダウンロードする際は、必ず十分に注意してください。
Unsplashには著作権フリーの画像が多数あり、あらゆる目的で利用できます。彼らの素晴らしい活動に感謝します。
ダウンロードした画像に「Tree.jpg」という名前を付け、これを文書に追加します。
import requests
from docx.shared import Cm
# Githubから画像をダウンロード
response = requests.get("https://raw.githubusercontent.com/sasankac/TestDataSet/master/Tree.jpg")
image = open("Tree.jpg", "wb")
image.write(response.content)
image.close()
# 画像を追加
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}")
出力結果
*** MY Image has width = 43891200 and Height as - 65836800
4. 画像サイズの調整
元の画像は大きすぎるため、適切なサイズに縮小する必要があります。widthと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}")
# 最後にドキュメントを保存
doc.save('report.docx')
*** My New dimensions Image has width = 3600000 and Height as - 3600000
5. 完成した文書の確認
文書を開くと、追加された画像とテキストが確認できます。
6. コード全体のまとめ
これまでの手順をすべてまとめると、以下のようになります。
サンプルコード
import requests
from docx.shared import Cm
# Githubから画像をダウンロード
response = requests.get("https://raw.githubusercontent.com/sasankac/TestDataSet/master/Tree.jpg")
image = open("Tree.jpg", "wb")
image.write(response.content)
image.close()
# 画像を追加
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}")
# 最後にドキュメントを保存
doc.save('report.docx')
出力結果
*** MY Image has width = 43891200 and Height as - 65836800 *** My New dimensions Image has width = 3600000 and Height as - 3600000

-
Microsoft Wordで封筒を作成・印刷する方法|初心者向け手順をわかりやすく解説
Microsoft Officeアプリケーションには、ユーザーの作業を効率化するための独自機能が数多く搭載されています。その一例として、Microsoft Wordを使用すれば、宛名や差出人を記載したプロフェッショナルな封筒を簡単に作成できます。 Microsoft Wordで封筒を作成・印刷する手順 ここでは、Microsoft Wordを使って封筒を作成する方法を詳しく解説します。作成した封筒は、お使いのプリンターで直接印刷することもできますし、業者に印刷を依頼することも可能です。全体の流れは、以下の2つのステップにまとめられます。 封筒の作成 封筒の印刷 1. 封筒を作成する まず、
-
Microsoft Wordで定型句(AutoText)を作成・活用する方法|オートコレクトとの違いも解説
1980年代初頭、MicrosoftがMS-DOS向けにWordを初めてリリースした頃から、ワープロソフトは大きく進化しました。当時の画期的な特徴は、マウスでの操作を前提に設計されていたことでした。現在のMicrosoft Wordには、当時は想像もできなかった機能が数多く搭載されています。そのひとつが「定型句(AutoText)」機能で、これを活用すればコンテンツをより速く、しかもミスを少なく作成できます。 Wordを頻繁に使う方なら、よく使うフレーズやテキストブロック、画像があるはずです。Wordの「オートコレクト」と「定型句」機能は、こうした繰り返し入力する項目を素早く挿入できるように設