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,然后统计数据写进去,这样就不需要复制粘贴了,代码优化以后有时间再来考虑吧。

1 + 6 =
快来做第一个评论的人吧~