参考:
Python中,添加写入数据到已经存在的Excel的xls文件,即打开excel文件,写入新数据
要解决的问题:
公司每周有一个日常统计任务量的表格,每个表格有十几个sheet,分别是不同组员的。每月需要把四-五周表格汇总,统计该组员每月任务量。
不知道excel怎么能弄好,也不会VBA。
希望能一劳永逸地解决这个问题,把每月花在统计excel的时间从2小时压缩到10分钟
解决步骤:
1.下载安装xlrd、xlwt、xlutils。
2.新建一个当月统计表格。用组员名命名好所需的sheet。这一步可以用python做,但excel直接做比较快。
3.用python把所有的表格数据按组员姓名汇总到当月统计表格。代码如下:
import xlrd
import xlwt
from xlutils.copy import copy
count = 0
x = 1
output_path = input('请给出统计表格地址:')
while True:
confirm_1 = input('继续请回车,终止程序请输入n。')
if confirm_1 == 'n':
print ('程序已终止,可关闭。')
break
else:
name = input('请输入组员英文名: ') #指明要读取哪个组员的数据
sheetNum = int(input("放在第几个sheet:"))-1 #指明该组员数据放在统计表格第几个sheet
while True:
path = str(input('请输入源表格路径。如该组员已统计完,请输入n。\n'))#指明要打开的表格
if path == 'n':
break
else:
data = xlrd.open_workbook(path) #打开表格
print ('该表格含有以下组员资料:',data.sheet_names()) #列举所有sheet
confirm_2 = input('如该表格不含所需组员资料,请输入n。继续请回车。\n')
if confirm_2 == 'n':
print ('已退出该表格。\n')
continue
else:
table = data.sheet_by_name(name) #打开对应数据
rowNum = table.nrows #源数据表格数据数目
oldbook = xlrd.open_workbook(output_path) #打开统计表格
newbook = copy(oldbook) #复制
newsheet = newbook.get_sheet(sheetNum) #读取统计表格的对应条目
for i in range (1,rowNum):
layer = table.cell(i,4).value #源表格layer数据
mistake = table.cell(i,2).value #源表格mistake数据
newsheet.write(count,0,layer) #把layer数据复制到新表格
newsheet.write(count,1,mistake) #把mistake数据复制到新表格
#然后不断重复
i = i+1
count = count + 1
print ("write new values ok",'第',x,'次')
newbook.save(output_path)
del i
print ("save with same name ok",'第',x,'次\n')
x = x+1
print ('Done')
4.在当月统计表格里sum一下就好了。
感言:纯新手的代码orz。两小时能做完的表格,代码写了一天半,再次orz。不过第一次为了解决一个实际问题写代码,居然还解决了,o(≧v≦)o~~好棒