python操作excel实践
文章最后更新时间为:2018年08月14日 11:17:25
需求
最近在公司大数据处理部门实习,但是也没有什么事情,换了个地方学习而已。第一天给了我一个任务,将数据分类,虽然无聊但是答应了就开始干呗。
好了之后需要对每种情况进行统计,首先根据C列数据分类,如果C列数据为空,那么就根据B列数据进行分类。如下图:
B列和C列的数据都是0/1/2。也就是分成三种情况,建立三个sheet表用来存放每种情况。
对excel
操作不熟悉,思来想去还是用python吧。正好在公司也无聊。
代码:
# -*- coding: utf-8 -*-
import xlrd
import xlwt
#创建workbook和sheet1/2/3对象
workbook = xlwt.Workbook()
sheet1 = workbook.add_sheet('sheet1',cell_overwrite_ok=True)
sheet2 = workbook.add_sheet('sheet2',cell_overwrite_ok=True)
sheet3 = workbook.add_sheet('sheet3',cell_overwrite_ok=True)
# 读取sheet写入新sheet123
data = xlrd.open_workbook('7.xls') # 打开xls文件
sheet = data.sheets()[0] # 打开第一张表
m1=0
m2=0
m3=0
sheet_Rows = sheet.nrows # 获取表的行数
print('总数据有%d条'%sheet_Rows)
for i in range(sheet_Rows): # 循环逐行打印
if sheet.row_values(i)[2]=='0':
sheet1.write(m1,0,sheet.row_values(i)[0])
m1=m1+1
elif sheet.row_values(i)[2]=='1':
sheet2.write(m2,0,sheet.row_values(i)[0])
m2=m2+1
elif sheet.row_values(i)[2]=='2':
sheet3.write(m3,0,sheet.row_values(i)[0])
m3=m3+1
else:
if sheet.row_values(i)[1]=='0':
sheet1.write(m1,0,sheet.row_values(i)[0])
m1=m1+1
elif sheet.row_values(i)[1]=='1':
sheet2.write(m2,0,sheet.row_values(i)[0])
m2=m2+1
elif sheet.row_values(i)[1]=='2':
sheet3.write(m3,0,sheet.row_values(i)[0])
m3=m3+1
else:
continue
#print('为0的数据有%d条'%m1)
#print('为1的数据有%d条'%m2)
#print('为2的数据有%d条'%m3)
workbook.save('test.xls')
print ('统计excel数据完成!')
最终结果:
总结
时间有点紧,于是代码质量也就不高,这里有一个小小的缺陷:代码的思想是创建了一个新的excel
文件叫test.xls
,然后把统计结果写进来,后期需要将这个exxcel
中的表再复制粘贴到原文件中去。
也许可以直接在原文件中建立三个sheet,然后统计数据写进去,这样就不需要复制粘贴了,代码优化以后有时间再来考虑吧。