import openpyxl
from openpyxl.styles import Font, Border, Side, Alignment
import glob
path = '/Users/wenwen/Desktop/部门预算统计/10月预算汇总表.xlsx'
# 打开汇总表
wb_total = openpyxl.load_workbook(path)
ws_total = wb_total.active
# 获取所有部门的数据表,在同目录下,以“10月预算.xlsx”结尾
deps = glob.glob('/Users/wenwen/Desktop/部门预算统计/*10月预算.xlsx')
# 将部门按名称排序
deps.sort()
# 对 deps 中的文件依次读取,写入汇总表
for dep in deps:
wb = openpyxl.load_workbook(dep)
ws = wb.active
# 选取部门数据表中的目标数据
values = [row[0].value for row in ws['C4:C12']]
# 删除路径中的目录名,保留文件名
dep = dep.replace('/Users/wenwen/Desktop/部门预算统计/', '')
# 通过删除文件名最后的 '10月预算.xlsx' 获得部门名称
dep_name = dep.replace('10月预算.xlsx', '')
# 在要写入的数据最开头插入部门名称
values.insert(0, dep_name)
ws_total.append(values)
# 依次填入 K 列的汇总公式
column_total = ws_total['K3:K12']
for row in column_total:
for cell in row:
cell.value = '=SUM(B{}:J{})'.format(cell.row, cell.row)
# 依次填入 13 行的汇总公式
line_total = ws_total['B13:K13']
for row in line_total:
for cell in row:
cell.value = '=SUM({}3:{}12)'.format(cell.column_letter, cell.column_letter)
# 别忘了填入 A13 的文字
ws_total['A13'].value = '总计'
# 设置字体:
# A2:J12 设置 11 号宋体
# K2:K12 以及 A13:K13 设置 11 号宋体,加粗,森林绿
# 实例化一个 11 号宋体字体
font_non_total = Font(name="宋体", size=11)
# 遍历范围内单元格设置字体
for row in ws_total['A2:J12']:
for cell in row:
cell.font = font_non_total
# 实例化一个 11 号宋体字体,加粗,森林绿(228b22)
font_total = Font(
name='宋体',
bold=True,
size='11',
color='228b22'
)
# 遍历汇总的 K 列设置字体
for row in ws_total['K2:K12']:
for cell in row:
cell.font = font_total
# 遍历汇总的第 13 行设置字体
for row in ws_total['A13:K13']:
for cell in row:
cell.font = font_total
# 设定 A3:K13 的边框:普通黑框线
# 先设定框线的样式
thin_side = Side(border_style='thin')
# 实例化 Border,将框线组装成边框
thin_border = Border(
left=thin_side,
right=thin_side,
top=thin_side,
bottom=thin_side
)
# 将设定好的 Border 实例赋值给单元格的 border 属性
for row in ws_total['A3:K13']:
for cell in row:
cell.border = thin_border
# 设定 A3:A13 对齐方式为水平居中
for row in ws_total['A3:A13']:
for cell in row:
cell.alignment = Alignment(horizontal='center')
# 为了方便云服务识别,不要改动最后一行的代码哦
wb_total.save('最终汇总.xlsx')
第二个(制作表格并且设置格式)
import openpyxl
from openpyxl.styles import Font, Border, Side
# 新员工信息.txt 文件路径已设定好
info_path = '/Users/wenwen/Desktop/员工密码管理/新员工信息.txt'
# 先将文件转为二维列表
file = open(info_path, 'r')
info = file.readlines()
info = [i.strip().split(',') for i in info]
file.close()
# 创建新工作簿并写入数据
info_wb = openpyxl.Workbook()
info_ws = info_wb.active
info_ws.append(['ID', '姓名', '邮箱'])
for line in info:
info_ws.append(line)
# 设定格式
# 设定标题行字体
header_font = Font(name='宋体', bold=True, size=11)
# 设定普通数据字体
normal_font = Font(name='宋体', size=11)
# 设置框线
side = Side(border_style='thin')
# 组装边框
border = Border(
left=side,
right=side,
top=side,
bottom=side
)
# 套用标题行字体
for row in info_ws['A1:C1']:
for cell in row:
cell.font = header_font
# 套用普通数据字体
for row in info_ws['A2:C51']:
for cell in row:
cell.font = normal_font
# 套用边框
for row in info_ws['A1:C51']:
for cell in row:
cell.border = border
# 为了方便云服务识别文件,不要改动最后一行的代码哦
info_wb.save('新员工信息.xlsx')