通过Python实现对xls表格按类别统计计数

        “学以致用 makes me happy!”

import xlrd,xlwt
from xlutils.copy import copy

zhui=input("\n请输入后缀日期【例:0314】:")

修机='工单查询修机单列表'+zhui
装机='工单查询装机单列表'+zhui
反馈='【输出】【'+zhui+'——数字统计】.xls'

print("\n提示输入文件:")
print("  ·"+修机+'.xls')
print("  ·"+装机+'.xls')
print("  ·【勿删】数字统计(原表).xls")

# 获取工作簿对象

x_wb=xlrd.open_workbook(修机+'.xls') # 获取(查询)工作簿对象

z_wb=xlrd.open_workbook(装机+'.xls') # 获取(查询)工作簿对象

wb_TongJi=xlrd.open_workbook('【勿删】数字统计(原表).xls') # 获取(报表)工作簿对象


# 获取原始列值
x_ws=x_wb.sheet_by_name(修机) # 获取工作表对象
z_ws=z_wb.sheet_by_name(装机) # 获取工作表对象


col_1=x_ws.col_values(4)    # 名称
col_2=z_ws.col_values(4)    # 标识1
col_3=z_ws.col_values(5)    # 名称
col_4=z_ws.col_values(31)   # 标识2

# 复制工作簿、新建工作表
nwb=copy(wb_TongJi)
nws_1=nwb.get_sheet('数字统计')


# 获取原始行序
xu=[]
for i in range(len(col_2)):
    xu.append(i)

# 筛选“装、移、是”列表索引
z_xu=[]
k1=0
for item_z in col_2:
    if (item_z=="装"):
        z_xu.append(xu[k1])
    k1=k1+1

y_xu=[]
k2=0
for item_y in col_2:
    if(item_y=="移"):
        y_xu.append(xu[k2])
    k2=k2+1

s_xu=[]
k3=0
for item_s in col_4:
    if (item_s=="是"):
        s_xu.append(xu[k3])
    k3=k3+1

# 筛选“装、移、是、修”名称列表

z_name=[]
for zn in z_xu:
    z_name.append(col_3[xu[zn]])

y_name=[]
for yn in y_xu:
    y_name.append(col_3[xu[yn]])

s_name=[]
for sn in s_xu:
    s_name.append(col_3[xu[sn]])

x_name=[]
for item_x in col_1:
    if (item_x!='处理人'):
        x_name.append(item_x)

# 统计“装、移、是、修”名称列表里每人出现的次数,并生成对应的序列
people=['汪AA','商BB','张C','范D','李F','于GG','梁HH','丁I','赵J','李KK','许LL','季M','鄂NN','王OO','田PP','董Q']

z_sum=[]
for z_man in people:
    z_sum.append(z_name.count(z_man))

y_sum=[]
for y_man in people:
    y_sum.append(y_name.count(y_man))

s_sum=[]
for s_man in people:
    s_sum.append(s_name.count(s_man))

x_sum=[]
for x_man in people:
    x_sum.append(x_name.count(x_man))
    

# 将“装、移、是、修”的处理结果写入对应的单元格
for rs_1 in range(1,17):
    nws_1.write(rs_1,1,z_sum[rs_1-1])

for rs_2 in range(1,17):
    nws_1.write(rs_2,2,y_sum[rs_2-1])

for rs_3 in range(1,17):
    nws_1.write(rs_3,5,s_sum[rs_3-1])

for rs_4 in range(1,17):
    nws_1.write(rs_4,3,x_sum[rs_4-1])


nwb.save(反馈)



print('\n\n\n恭喜!程序执行完毕!\n\n')


print("\n提示输出文件:")
print("  ·"+反馈+'\n\n\n\n')

        结果查看:


参考资料:

  • 以往的代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值