实现功能
在配置文件config.xlsx中写好科室名和科室号,然后运行程序。会得到一个以时间命名的,增加日期的报纸配送条xlsx文件
存放 科室号 与 科室名 的文件 config.xlsx
config.xlsx文件的格式无所谓,反正最后的配送条会设置格式的。(只读取A和B两列的数据)
最后输出的报纸配送条
先想想程序该咋写
(1)导入库
(2)读取配置文件,将 科室号 和 科室名 存入数组
(3)生成日期,把日期也存入数组
(4)创建一个excel,把数组录入进去
(5)调整字体和字体格式,页边距。
(6)将带时分秒的日期作为文件名(防止文件名重复),生成excel文件
写代码
- 导入库
用来打开excel文件的
import openpyxl
用来生成日期
import time
Font :设置字体样式。比如大小,字体。加不加粗啥的
Alignment :设置字体位置,我一般设置上下左右全居中
from openpyxl.styles import Font, Alignment
- 读取配置文件,将 科室号 和 科室名 存入数组
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')
# ----------保存配送表结束----------