Python+openpyxl+tkinter自动生成指定格式Excel文件

# -*- coding: utf-8 -*-
# @Team     : Pig worm
# @Author   : BeiGu
# @Time     : 2024/3/29 10:00
# @fileName : CreExcelFile.py
# @Tool     : PyCharm
import openpyxl
from openpyxl import Workbook
from openpyxl.styles import Border, Side, colors, PatternFill, Font, Alignment
import time
import os
import tkinter
import tkinter.messagebox



def createExcelFile():
    today = time.strftime("%Y-%m-%d", time.localtime())
    name1 = "/"
    path = fileName = r"D:/路径/路径/" + today
    fileName = r"D:/路径/路径/" + today  + name1 + today + "-SKU-工作安排.xlsx"
    xlsx = openpyxl.Workbook()
    name = ["注意事项","总表","sheet1(自定义sheet页名称)","sheet2(自定义sheet页名称)","sheet3(自定义sheet页名称)","sheet4(自定义sheet页名称)","完成情况"]
    name_len = len(name)
    for i in range(name_len):
        sheets = xlsx.create_sheet(name[i])
        if name[i] == '注意事项':
            sheets.sheet_properties.tabColor = 'FF0000'
        if name[i] != "注意事项" and name[i] != "完成情况":
            sheets.append(['商品外部标识', '商品名称', '商品SKU', 'SKU商品成本 / 供货价', '云平台VIP价', '云平台原价', '云平台现价', '会员百分比'])
        if name[i] == "完成情况":
            ownWork = ['姓名','上架/选品','完成数量','问题商品','目标数量','目标完成度','日期','备注']
            assistWork = ['姓名','上架/选品','完成数量','问题商品','目标数量','目标完成度','总计数量','分配总数量','总完成度','日期','备注']
            sheets.merge_cells(range_string='E6:H6')
            sheets['E6'] = '本职工作完成情况:'
            sheets['E6'].font = Font(size=20,bold=True)
            letter = ['E','F','G','H','I','J','K','L','M','N','O']
            letter_len = len(letter)
            # 批量设置单元格宽度
            for c in range(letter_len):
                sheets.column_dimensions[letter[c]].width = 16
            # 单元格边框
            border_set = Border(left=Side(style='medium', color=colors.BLACK),
                                right=Side(style='medium', color=colors.BLACK),
                                top=Side(style='medium', color=colors.BLACK),
                                bottom=Side(style='medium', color=colors.BLACK))
            redFill = PatternFill(start_color='00CCFF', end_color='00CCFF', fill_type='solid')
            # 设置字体大小
            fontStyle = Font(size="16",bold=True)
            # 获取长度
            ownWork_len = len(ownWork)
            assistWork_len = len(assistWork)
            for i in range(ownWork_len):
                # 单元格边框
                sheets[letter[i] + '8'].border = border_set
                # 设置背景色
                sheets[letter[i] + '8'].fill = redFill
                # 设置字体大小
                sheets[letter[i] + '8'].font = fontStyle
                # 写人表头值
                sheets[letter[i] + '8'] = ownWork[i]
                # 居中显示
                sheets[letter[i] + '8'].alignment = Alignment(horizontal='center', vertical='center')
            # 插入内容
            tab_li = [5, 6, 9, 11]
            tab_value = ['自定义姓名1', '上架', '500', today]
            tab_value_two = ['自定义姓名2', '上架', '500', today]
            tab_li_len = len(tab_li)
            for j in range(tab_li_len):
                sheets.cell(row=9, column=tab_li[j], value=tab_value[j]).alignment = Alignment(horizontal='center', vertical='center')
                sheets.cell(row=10, column=tab_li[j], value=tab_value_two[j]).alignment = Alignment(horizontal='center', vertical='center')
            sheets.merge_cells(range_string='E15:H15')
            sheets['E15'] = '同事协助完成情况:'
            sheets['E15'].font = Font(size=20, bold=True)
            for s in range(assistWork_len):
                # print("单元格坐标:" + letter[i] + '17', '单元格填充内容:' + assistWork[i])
                # 单元格边框
                sheets[letter[s] + '17'].border = border_set
                # 设置背景色
                sheets[letter[s] + '17'].fill = redFill
                # 设置字体大小
                sheets[letter[s] + '17'].font = fontStyle
                # 写入表头值
                sheets[letter[s] + '17'] = assistWork[s]
                # 居中显示
                sheets[letter[s] + '17'].alignment = Alignment(horizontal='center', vertical='center')
            assistWork_value1 = ['name-1', '选品', '800', today]
            assistWork_value2 = ['name-2', '上架', '500', today]
            assistWork_value3 = ['name-3', '上架', '500', today]
            assistWork_value4 = ['name-4', '上架', '500', today]
            assistWork_value5 = ['name-5', '上架', '500', today]
            assistWork_li = [5, 6, 9, 14]
            assistWork_li_len = len(assistWork_li)
            for h in range(assistWork_li_len):
                sheets.cell(row=18, column=assistWork_li[h], value=assistWork_value1[h]).alignment = Alignment(horizontal='center',vertical='center')
                sheets.cell(row=19, column=assistWork_li[h], value=assistWork_value2[h]).alignment = Alignment(horizontal='center',vertical='center')
                sheets.cell(row=20, column=assistWork_li[h], value=assistWork_value3[h]).alignment = Alignment(horizontal='center', vertical='center')
                sheets.cell(row=21, column=assistWork_li[h], value=assistWork_value4[h]).alignment = Alignment(horizontal='center', vertical='center')
                sheets.cell(row=22, column=assistWork_li[h], value=assistWork_value5[h]).alignment = Alignment( horizontal='center', vertical='center')
    xlsx.remove_sheet(xlsx.get_sheet_by_name("Sheet"))
    window = tkinter.Tk()
    if not os.path.exists(path):
        os.makedirs(path)
        xlsx.save(fileName)
        window.withdraw()
        result = tkinter.messagebox.showinfo('1002','文件已保存在:' + str(fileName))
    elif os.path.exists(fileName):
        window.withdraw()  # 退出默认 tk 窗口
        result = tkinter.messagebox.showerror('1001', '在此目录下已存在相同路径文件')



createExcelFile()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要基于Excel表格中的答案完成一个答题程序,您可以使用`openpyxl`库来读取Excel文件中的答案,并结合Tkinter创建一个交互式的答题界面。以下是一个简单的示例代码: ```python import tkinter as tk from openpyxl import load_workbook def load_answers(file_path): # 从Excel文件中加载答案 workbook = load_workbook(file_path) sheet = workbook.active answers = {} for row in sheet.iter_rows(min_row=2, values_only=True): question = row[0] answer = row[1] answers[question] = answer return answers def check_answer(): # 检查答案是否正确 question = question_label.cget("text") user_answer = answer_entry.get() if question in answers: correct_answer = answers[question] if user_answer == correct_answer: result_label.config(text="回答正确", fg="green") else: result_label.config(text="回答错误", fg="red") else: result_label.config(text="题目不存在", fg="red") def next_question(): # 显示下一题 current_index = questions.index(question_label.cget("text")) if current_index + 1 < len(questions): next_index = current_index + 1 question_label.config(text=questions[next_index]) answer_entry.delete(0, tk.END) result_label.config(text="") # 加载答案 answers = load_answers("answers.xlsx") # 创建主窗口 window = tk.Tk() # 创建问题标签、答案输入框、结果标签和按钮 question_label = tk.Label(window, text="问题1") question_label.pack() answer_entry = tk.Entry(window) answer_entry.pack() result_label = tk.Label(window) result_label.pack() check_button = tk.Button(window, text="检查答案", command=check_answer) check_button.pack() next_button = tk.Button(window, text="下一题", command=next_question) next_button.pack() # 问题列表 questions = list(answers.keys()) # 运行主循环 window.mainloop() ``` 在上述代码中,我们首先定义了两个辅助函数:`load_answers()`用于从Excel文件中加载答案,`check_answer()`用于检查用户输入的答案是否正确。然后,我们创建了一个Tkinter窗口,并添加了一个问题标签、一个答案输入框、一个结果标签和两个按钮。点击"检查答案"按钮时会调用`check_answer()`函数进行答案检查,并根据结果更新结果标签的显示。点击"下一题"按钮时会显示下一道题目。 请注意,上述代码中假设Excel文件的第一个列是问题,第二列是答案。您可以根据实际情况进行调整。 希望这可以帮助到您!如果您有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cy_橘子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值