Python自动化办公 Day1 - 合并Excel

Python自动化办公 Day1 - 合并Excel

假设这样一个场景,当你作为公司总部经理,需要收集各地方业务部的销售数据,并且汇总分析。你的分公司如果数量不多,简单的复制粘贴即可以完成需求,假设你的分公司多达成百上千,那么每次汇总可能就要花费你几小时的时间。使用Python来进行自动化的表格汇总,可以直接解放你的所有时间。

创建模拟数据

我们使用xlwings这个python库,可以直连你的excel表格,我们先随机产生一些表格数据。

# 产生随机数据
column_names = ['部门', '销售量']
for i in range(10):
  book = app.books.add()
  book.sheets[0].range('A1').value = column_names
  book.sheets[0].range('A2').value = [['部门{}'.format(j + 1), random.randint(1, 100)] for j in range(100)]
  name = '地区{}.xlsx'.format(i + 1)
  book.save('excel_data/{}'.format(name))
  app.books[name].close()

image-20200808230949601

image-20200808230840026

合并表格

接下来,我们读取每个地区的数据,合并至汇总表格。合并十个表格,每个表格100条数据,大概需要5s,时间非常短,并且你不需要进行任何中间操作,可以批量自动化运行

# 初始化结果excel
result = app.books.add()
result.sheets[0].range('A1').value = ['地区', '部门', '销售量']

last_row_num = 2
filenames = [x for x in os.listdir('excel_data') if x.endswith('.xlsx')]
for f in filenames:
  # 读取数据
  book = app.books.open('excel_data/{}'.format(f))
  data = book.sheets[0].range('A2').expand().value
  data = [[f.replace('.xlsx', '')] + x for x in data]

  # 写入数据
  result.sheets[0].range('A{}'.format(last_row_num)).value = data
  last_row_num += len(data)
  book.close()

  # 保存结果
  name = '汇总.xlsx'
  result.save(name)
  app.books[name].close()

image-20200808231333913

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值