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

本文介绍了如何使用Python库openpyxl创建一个包含多个工作表的Excel文件,设置了不同的样式,如单元格格式、边框、颜色和字体,并填充了预定义的数据,包括商品信息和完成情况表单。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# -*- 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()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Cy_橘子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值