見出し画像

【Python練習-004】エクセル内のデータを画像ファイルにする Part2

前回は、A1セルにおいてデータをただ画像にするだけだったのですが、改行したい場合、セル内で Alt + Enter で改行しておくという手間がちょっと嫌でした。

今回は複数列にわけておいたデータを改行コードで連結してみたいと思います。
今回の目標物はこれ↓でした。

使用したエクセルデータはこんな感じ

コードはchatGPTに手伝ってもらって完成させました。

from PIL import Image, ImageDraw, ImageFont
import openpyxl

# Excelファイルを開く
wb = openpyxl.load_workbook('text-data.xlsx')

# シートを選択
sheet = wb.active

# A1、B1、C1セルの値を取得して変数に格納
txt_a1 = sheet['A1'].value
txt_b1 = sheet['B1'].value
txt_c1 = sheet['C1'].value
txt_d1 = sheet['D1'].value


# Excelファイルを閉じる
wb.close()

# テキストを改行コードで連結
txt_img = "\n".join([txt_a1, txt_b1, txt_c1,txt_d1])

# RGB, 画像サイズ, 背景色を設定
im = Image.new("RGB", (1792, 1024), (256, 230, 256))

draw = ImageDraw.Draw(im)

# PCローカルのフォントへのパスと、フォントサイズを指定
font = ImageFont.truetype('C:/Windows/Fonts/HGRPP1.TTC', 85)

# 描画位置、描画する文字、文字色、フォントを指定
draw.multiline_text((700, 150), txt_img, fill=(200, 0, 200), font=font)

# ファイルに出力
im.save("tx-img.png")
print("画像ファイルを生成しました")

今回追加した部分は


# テキストを改行コードで連結
txt_img = "\n".join([txt_a1, txt_b1, txt_c1,txt_d1])

ですね。でもこれだと、複数行の文字列から複数の画像を作りたいときどういう処理にしようかな? まだまだ勉強せねばです。

まずは、この方法により、望んだ結果を得ることができました。
が、セルの値を取得する手法などがやや不格好ですね。
目標の一つは、Excelで格子状に配置されたデータをスムーズに操作できるようにすることなので、さらに努力して改善していきます。

このプロジェクトの最終目標は、WordPressサイトやnoteのアイキャッチ画像を自動でちゃちゃっと生成できるようになることです。

では💕


この記事が気に入ったらサポートをしてみませんか?