python - 如何读取 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))
但是在每个循环之后,创建的图像也包含前一个图像的值,如何解决这个问题?
解决方案
您正在循环外创建 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
推荐阅读
- node.js - 在 node.js 中将字符串转换为 64 位浮点数
- ios - 将 JSON 请求循环到后端(REST API)
- minizinc - 基于约束最大化
- google-cloud-platform - 在 GCP 中创建没有公共 IP 的虚拟机
- node.js - 我存储在 s3 中的对象在访问 url 时会自动下载
- tomcat - URL 中的两个连续点将 URL 导航向后移动一步
- javascript - 为什么 jQuery 验证显示单词“false”而不是我的自定义消息?
- python - 实现一个简单的插件管理器类,它能够注册需要不同参数的检查函数
- ios - 启用 https 时,iOS 应用程序无法 ATS 系统信任
- wordpress - WPBakery Page Builder 后端编辑器不工作