import qrcode from barcode import Code128 from barcode.writer import ImageWriter import pandas as pd import json from PIL import Image as ImagePIL import os from openpyxl import Workbook from openpyxl.drawing.image import Image as ImageXL
def qrCodeGen(fName, info): img = qrcode.make(info) img.save(f"{fName}")
def barCodeGen(fName, info): img = Code128(info, writer=ImageWriter()) img.save(f"{fName}")
def imgResize(fName, image): img = ImagePIL.open(image) img = img.resize((250, 130), ImagePIL.LANCZOS) img.save(f'{fName}')
def imgCropper(fName, image): img = ImagePIL.open(image) cropped = img.crop((30,30,260,260)) cropped.save(fName)
def excelProcesser(fName): df = pd.read_excel(fName) origin = df.to_json() origin = json.loads(origin) data = [] for key in origin["序号"]: data.append([origin["序号"][key], str(origin["箱号"][key]), str(origin["数量"][key]), origin["SN码"][key], origin["订单号"][key]]) return data
def regularWriter(worksheet, columeA, columeB, line, index): worksheet[f"{columeA}{line}"] = "PO NO.:" worksheet[f"{columeB}{line}"] = data[index][4] worksheet[f"{columeA}{line+2}"] = "BOX ID:" worksheet[f"{columeB}{line+2}"] = data[index][1] worksheet[f"{columeA}{line+10}"] = f"QTY: {data[index][2]} PCS" worksheet[f"{columeA}{line+12}"] = "SN:"
def pixelWriter(worksheet, columeA, line, index): img = ImageXL(f"{data[index][0]}/Box.png") worksheet.add_image(img, f"{columeA}{line+3}") img = ImageXL(f"{data[index][0]}/SN.png") worksheet.add_image(img, f"{columeA}{line+12}")
if __name__ == "__main__": pass data = excelProcesser("1.xlsx") for item in data: os.mkdir(f"{item[0]}") qrCodeGen(f"{item[0]}/SN.png", item[3]) barCodeGen(f"{item[0]}/Box", item[1]) imgResize(f"{item[0]}/Box.png", f"{item[0]}/Box.png") imgCropper(f"{item[0]}/SN.png", f"{item[0]}/SN.png") wb = Workbook() ws = wb.active ws.title = data[0][4] line = 1 for index in range(len(data)): if index % 2 == 0: regularWriter(ws, "C", "D", line, index) pixelWriter(ws, "D", line, index) else: regularWriter(ws, "J", "K", line, index) pixelWriter(ws, "K", line, index) line += 26 wb.save("2.xlsx")
|