You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python在Excel文件中导出二维码图片?代码修复求助

解决Python导出二维码图片到Excel的问题

原代码的核心问题是直接将PIL Image对象存入DataFrame后导出,Excel无法识别这些对象,只会输出对象的字符串描述(比如<PIL.Image.Image ...>)。要实现把二维码图片插入Excel,得用xlsxwriter的图片插入API手动处理,以下是修复后的完整代码:

import pandas as pd
import qrcode
import xlsxwriter
from io import BytesIO

def create_qr_code(product_code, product_name):
    # 生成二维码
    qr = qrcode.QRCode(
        version=1,
        error_correction=qrcode.constants.ERROR_CORRECT_L,
        box_size=10,
        border=4,
    )
    qr.add_data(f"{product_code}, {product_name}")
    qr.make(fit=True)
    
    # 将图片存入字节流,避免生成本地临时文件
    img = qr.make_image(fill_color="black", back_color="white")
    img_stream = BytesIO()
    img.save(img_stream, format='PNG')
    img_stream.seek(0)
    return img_stream

# 读取源Excel数据
source_path = r'C:\Users\DELL\Documents\project\PMS-231116-BME-code.xlsx'
data = pd.read_excel(source_path, skiprows=2)

# 整理要导出的文本数据
output_df = data[['Asset no.', 'Equipment name']].rename(columns={
    'Asset no.': 'Product Code',
    'Equipment name': 'Product Name'
})

# 导出Excel并插入二维码
output_path = 'C:/Users/DELL/Documents/project/output_data.xlsx'
with pd.ExcelWriter(output_path, engine='xlsxwriter') as writer:
    # 写入文本数据,表头默认在第1行,数据从第2行开始
    output_df.to_excel(writer, index=False)
    worksheet = writer.sheets['Sheet1']
    
    # 设置列宽适配内容
    worksheet.set_column('A:A', 15)
    worksheet.set_column('B:B', 30)
    worksheet.set_column('C:C', 20)
    
    # 遍历每行插入二维码到C列
    for row_idx, row in output_df.iterrows():
        qr_stream = create_qr_code(row['Product Code'], row['Product Name'])
        # Excel行号从1开始,row_idx从0开始,所以对应行号是row_idx+2(数据行从第2行开始)
        worksheet.insert_image(
            row_idx + 2, 2,  # 目标单元格:C(row_idx+2)
            f'qr_{row["Product Code"]}.png',
            {'image_data': qr_stream, 'x_scale': 0.2, 'y_scale': 0.2}
        )
        # 设置行高适配缩放后的二维码
        worksheet.set_row(row_idx + 2, 50)

关键修复点说明:

  1. 用字节流存储图片:通过BytesIO把二维码图片存在内存里,不用生成本地临时文件,更高效。
  2. 指定xlsxwriter引擎:只有这个引擎支持insert_imageAPI,能直接把图片插入Excel单元格。
  3. 手动插入图片:先写入文本数据,再遍历每行把二维码插入对应单元格,同时调整列宽和行高保证显示效果。
  4. 缩放图片:通过x_scale和y_scale控制二维码大小,避免单元格放不下。

依赖安装

确保已安装所有需要的库:

pip install pandas qrcode xlsxwriter pillow

内容的提问来源于stack exchange,提问作者Nguyễn Ngọc Nghiêm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 16:07:48