1、案例需求:将多个工作簿中的数据汇总合并到一个新的工作簿中
步骤:
a.创建新工作簿、创建一个新工作表
b.创建工作表,编辑工作表名
c.设置单元格样式:字体、对齐样式、填充样式
d.合并单元格、添加表头
e.遍历工作簿并打开对应的工作表,取出对应的工作表中的值
f.写入新的工作表中
2、工作簿前后展示
要归并处理的工作簿:
单个工作簿中的数据:
3、代码展示:
引入表格数据处理模块:openpyxl、单元格格式处理模块 openpyxl.styles
import openpyxl
from openpyxl.styles import Font,Alignment,PatternFill
# 创建新工作簿
wb = openpyxl.Workbook()
# 创建一个新工作表
ws=wb.active
# 编辑工作表名
ws.title='汇总数据'
# 元组需要加逗号
ws.append(('小保健大药房2022全国销售数据',))
# 设置单元格样式
cell = ws['A1']
# 设置单元格字体
cell.font = Font(size= 20,bold=True,color='0000ff',name='微软雅黑')
# 设置单元格对齐样式
cell.alignment = Alignment(horizontal='center', vertical='center')
# 设置单元格填充样式
cell.fill=PatternFill(fill_type='solid', fgColor="00ff00")
# 合并单元格
ws.merge_cells('A1:G1')
# 向工作表中写入表头
ws.append(['购药时间', '社保卡号', '商品编码', '商品名称', '销售数量', '应收金额', '实收金额'])
# 需要要合并的工作簿名
names = ('高新店','犀浦店','新津店')
for name in names:
# 循环遍历打开这些工作簿
wb1=openpyxl.load_workbook(f'小宝剑大药房({name})2018年销售数据.xlsx')
# 打开每一个工作簿的第一个工作表
sheet=wb1.worksheets[0]
# 选取数据区域A3:GX
rows=sheet[f'A3:G{sheet.max_row}']
# 将行列表的数据放到一个大列表中
# data = []
# for row in rows:
# if row[0].value is not None:
# 将工作表中每一行的数据放到一个列表中
# res = []
# for cell in row:
# res.append(cell.value)
# data.append(res)
# 将以上代码转换为列表推导式
data=[[cell.value for cell in row] for row in rows if row[0].value]
# 将这些数据一行一行写入新工作簿的工作表中
for content in data:
ws.append(content)
# 保存工作簿,并命名
wb.save('小保健药房汇总数据20220512.xlsx')
处理后的数据展示: