【python】openpyxl实现报纸配送条自动生成

实现功能

在配置文件config.xlsx中写好科室名和科室号,然后运行程序。会得到一个以时间命名的,增加日期的报纸配送条xlsx文件

存放 科室号 与 科室名 的文件 config.xlsx
config.xlsx文件内容
config.xlsx文件的格式无所谓,反正最后的配送条会设置格式的。(只读取A和B两列的数据)

最后输出的报纸配送条
在这里插入图片描述

先想想程序该咋写

(1)导入库
(2)读取配置文件,将 科室号 和 科室名 存入数组
(3)生成日期,把日期也存入数组
(4)创建一个excel,把数组录入进去
(5)调整字体和字体格式,页边距。
(6)将带时分秒的日期作为文件名(防止文件名重复),生成excel文件

写代码

  1. 导入库

用来打开excel文件的

import openpyxl

用来生成日期

import time

Font :设置字体样式。比如大小,字体。加不加粗啥的
Alignment :设置字体位置,我一般设置上下左右全居中

from openpyxl.styles import Font, Alignment
  1. 读取配置文件,将 科室号 和 科室名 存入数组
rFile = 'config.xlsx'  #文件名
wb = openpyxl.load_workbook(rFile) # openpyxl.load_workbook(地址) 打开excel文件,此时会以文件最后操作的sheet为当前活动页

完整代码

import openpyxl
import time
from openpyxl.styles import Font, Alignment

# 获取配置文件
rFile = 'config.xlsx'
wb = openpyxl.load_workbook(rFile)
# 获取当前活动页
wa = wb.active

# ----------读取配置文件信息开始----------
# 获取A列的值(科室号)
lst_A = []
for i in wa['A']:
    lst_A.append(i.value)
# 获取B列的值(科室名)
lst_B = []
for i in wa['B']:
    lst_B.append(i.value)
# ----------读取配置文件信息结束----------

# ----------生成报纸配送数组开始----------
# 获取当前时间
nowDate = time.strftime("%Y-%m-%d", time.localtime())
# 空格占位
spaceBar = []
for i in lst_A:
    spaceBar.append('')
# 配送日期列
nds = []
for i in lst_A:
    nds.append(nowDate)

# 生成配送数组
distArr = list(zip(spaceBar, lst_A, lst_B, nds))
# ----------生成报纸配送数组结束----------

# ----------录入数组开始----------
# 创建新的xlsx表格
newWb = openpyxl.Workbook()
# 获取当前活动页
newWa = newWb.active
# 数组录入表格
for rows in distArr:
    newWa.append(rows)
# ----------录入数组结束----------

# ----------设置格式开始----------
# 设置列宽
newWa.column_dimensions['A'].width = 10.0
newWa.column_dimensions['B'].width = 15.0
newWa.column_dimensions['C'].width = 30.0
newWa.column_dimensions['D'].width = 20.0

# 设置行高
cellHeight = 70.0
for i in range(1, newWa.max_row + 1):
    newWa.row_dimensions[i].height = cellHeight

# 设置字体样式
fontType = Font(name=u'华文行楷', bold=True, italic=False, size=20)

# 单元格字体对象
wat = tuple(newWa)

for i in range(1, newWa.max_row + 1):
    for j in range(1, newWa.max_column + 1):
        # 挨个修改每个字体属性
        wat[i - 1][j - 1].font = fontType
        # 修改字体上下居中,左右居中
        newWa.cell(i, j).alignment = Alignment(horizontal='center', vertical='center')

# 页边距设置
newWa.page_margins.left = 0  # 左边距
newWa.page_margins.right = 0  # 右边距
newWa.page_margins.top = 0  # 上边距
newWa.page_margins.bottom = 0  # 下边距

# ----------设置格式结束----------

# ----------保存配送表开始----------
# 生成配送单名称
distributionName = time.strftime("%Y-%m-%d-%M%S%Y", time.localtime())
# 生成配送表
newWb.save(distributionName + '.xlsx')
# ----------保存配送表结束----------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值