エクセルとPythonで大量のQRコードを作る方法

 概要

キャンペーンや製品等に内容の違うQRコードを大量に作る方法です。
エクセルからpythonでQRコードの画像を大量に作れます。
URLや日本語や長文でも大丈夫です。
詳しくはないので詳細は調べてください。。。
多少プログラムの知識が必要です。
仕事で必要だったので健忘録用です。

準備と必要なもの

ざっくりPythonが動く環境とエクセルファイルです。

1.PythonをPCに導入します。

Pythonをインストール後、以下のライブラリを導入。

QRコード画像生成ライブラリ「qrcode」の導入をします。
例:Windowsの場合、cmdでpip install qrcode[pil]

エクセルを操作するライブラリ「openpyxl」の導入をします。
例:Windowsの場合、cmdでpip install openpyxl

2. 以下のようなエクセルを用意します。

A列に変換したい文字列、B列にファイル名を入れます。
2行目以降が変換対象です。

qrcode.xlsxと名前で保存します。

3. プログラムを用意します。

テキストエディタで以下のプログラム内容をqr.pyという名前で保存します。
文字コードはUTF-8です。

import io
import re
import os
import qrcode
import zipfile
import openpyxl as excel
from PIL import ImageDraw

# Excelのパス
EXCEL_FILE_PATH = os.path.join(os.path.dirname(__file__), 'qrcode.xlsx')


wb = excel.load_workbook(EXCEL_FILE_PATH, data_only=True)
ws = wb.active

zip_stream = io.BytesIO()
img_zip_file = zipfile.ZipFile(zip_stream, 'w')

for cnt, row in enumerate(ws.rows):
    if cnt > 0:
        file_str = str(row[1].value)
        code_str = str(row[0].value)
        name = row[1].value
        img = qrcode.make(code_str)
        draw = ImageDraw.Draw(img)
        img_stream = io.BytesIO()
        img.save(img_stream, 'PNG')
        img_zip_file.writestr(
            re.sub(r'[\\/:*?"<>|]+', '_', file_str)
            + '.png', img_stream.getvalue())
        img_stream.close()

img_zip_file.close()

with open(os.path.join(os.path.dirname(__file__), 'qr_code_make.zip'), 'wb') as out:
    out.write(zip_stream.getvalue())

zip_stream.close()

4. プログラムを実行します。

qr.pyとqrcode.xlsxを同じフォルダに入れて、ファイルエクスプローラーのパスが表示されているアドレスバーにcmdと入力エンター。
黒い画面が立ち上がります。

黒い画面でpython qr.pyと入力します。
qr_code_make.zipというファイルが作成されます。解凍すると以下のようなQRコードのpng画像が作成されます。

以上、説明不足ですが何かの役に立てたら幸いです。
それでは、pythonで仕事効率化を!

0 件のコメント :

コメントを投稿

スポンサーリンク

Amazon.co.jpアソシエイトについて

好奇心アップデートは、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイトプログラムである、Amazonアソシエイト・プログラムの参加者です。

プライバシーポリシー