PYTHON:使用 pandas ExcelWriter 从 .xlsx 中提取数据并使用 PIL 在图像上输出文本
PYTHON: Extracting data from .xlsx using pandas ExcelWriter and outputting as text on image using PIL
1个/
数据:
Column A Column B Column C
AAA 1230 CCC
ABA 4560 CDC
AAb 7890 CCD
...
2个/
设置 (pandas):
import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile
df = pd.read_excel("data.xlsx", sheet_name="Sheet1")...
3个/
格式化(例如第一行):
# no formatting for Column A > AAA
# for Column B > 1,230
print(f"{1230:,d}")
# for Column C > ccc
print("CCC".lower())
4 /
完成后,需要将数据打印在图像上。
设置(PIL):
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
img = Image.open("input.jpg")
draw = ImageDraw.Draw(img)
font = ImageFont.truetype("arial.ttf", 10)
draw.text((10, 10), Column A data, (0, 0, 0), font=font)
draw.text((10, 20), Column B data, (0, 0, 0), font=font)
draw.text((20, 20), Column C data, (0, 0, 0), font=font)
img.save("output.jpg")
5个/
成品:
^ 这是第 1 行的输出示例(如果成功),我在这里缺少什么?我怎样才能循环呢?提前致谢!
import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
df = pd.read_excel("data.xlsx", sheet_name="Sheet1")
tuples = [tuple(r) for r in df.to_numpy().tolist()]
maxtpp = len(tuples)
count = 0
while count <= maxtpp:
(Column A, Column B, Column C) = tuples[count]
Column B = f"{Column B:,d}"
Column C = Column C.lower()
img = Image.open("input.jpg")
draw = ImageDraw.Draw(img)
font = ImageFont.truetype("arial.ttf", 10)
draw.text((10, 10), Column A, (0, 0, 0), font=font)
draw.text((10, 20), Column B, (0, 0, 0), font=font)
draw.text((20, 20), Column C, (0, 0, 0), font=font)
count = count + 1
img.save("output.jpg")
if count > maxtpp:
break
输出说明:
1个/ 数据:
Column A Column B Column C
AAA 1230 CCC
ABA 4560 CDC
AAb 7890 CCD
...
2个/ 设置 (pandas):
import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile
df = pd.read_excel("data.xlsx", sheet_name="Sheet1")...
3个/ 格式化(例如第一行):
# no formatting for Column A > AAA
# for Column B > 1,230
print(f"{1230:,d}")
# for Column C > ccc
print("CCC".lower())
4 / 完成后,需要将数据打印在图像上。 设置(PIL):
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
img = Image.open("input.jpg")
draw = ImageDraw.Draw(img)
font = ImageFont.truetype("arial.ttf", 10)
draw.text((10, 10), Column A data, (0, 0, 0), font=font)
draw.text((10, 20), Column B data, (0, 0, 0), font=font)
draw.text((20, 20), Column C data, (0, 0, 0), font=font)
img.save("output.jpg")
5个/ 成品:
^ 这是第 1 行的输出示例(如果成功),我在这里缺少什么?我怎样才能循环呢?提前致谢!
import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
df = pd.read_excel("data.xlsx", sheet_name="Sheet1")
tuples = [tuple(r) for r in df.to_numpy().tolist()]
maxtpp = len(tuples)
count = 0
while count <= maxtpp:
(Column A, Column B, Column C) = tuples[count]
Column B = f"{Column B:,d}"
Column C = Column C.lower()
img = Image.open("input.jpg")
draw = ImageDraw.Draw(img)
font = ImageFont.truetype("arial.ttf", 10)
draw.text((10, 10), Column A, (0, 0, 0), font=font)
draw.text((10, 20), Column B, (0, 0, 0), font=font)
draw.text((20, 20), Column C, (0, 0, 0), font=font)
count = count + 1
img.save("output.jpg")
if count > maxtpp:
break
输出说明: