首页 > 解决方案 > 如何读取 Excel 文件,创建二维码?

问题描述

我正在尝试使用此代码

from openpyxl import load_workbook
import qrcode

wb = load_workbook("D:\QR\qrcodes.xlsx")  
ws = wb.['Sheet1']  
column = ws['A']  # Column
data = [column[x].value for x in range(len(column))]

print(data)
qr = qrcode.QRCode(version = 1, error_correction = qrcode.constants.ERROR_CORRECT_H,box_size = 10, border = 4)

ext=".png"
for images in data:
    qr.add_data(i)
    qr.make(fit=True)
    img=qr.make_image()
    img.save("{}{}".format(i,ext))

但是在每个循环之后,创建的图像也包含前一个图像的值,如何解决这个问题?

标签: pythonopenpyxl

解决方案


您正在循环外创建 QR 对象。
您最好在 for 循环中初始化对象<class 'qrcode.main.QRCode'>
使用函数来创建 QR 图像,因为函数内的变量具有本地范围。

ext=".png"
def createQr(data):
    qr = qrcode.QRCode(version = 1, error_correction = qrcode.constants.ERROR_CORRECT_H,box_size = 10, border = 4)
    qr.add_data(data)
    qr.make(fit=True)
    img=qr.make_image()
    return img

for i in data:
    img = createQr(i)
    img.save("{}{}".format(i,ext))

同样正如@martineau所提到的,您必须将循环变量从图像更改为i


推荐阅读