Python实现对excel文件列表值进行统计的方法

1090次阅读  |  发布于5年以前

本文实例讲述了Python实现对excel文件列表值进行统计的方法。分享给大家供大家参考。具体如下:


    #!/usr/bin/env python
    #coding=gbk
    #此PY用来统计一个execl文件中的特定一列的值的分类
    import win32com.client
    filename=raw_input("请输入要统计文件的详细地址:")
    flag=0    #用于判断文件 名如果不带'日'就为 0
    if '\xc8\xd5' in filename:flag=1
    print 50*'='+'\n\t 请稍等,程序正在统计中。。。'
    try:
      xls=win32com.client.Dispatch('et.Application')
      try:
        xlsfile=xls.Workbooks.Open(filename)
        #打开指定的文件,一般打开的是sheet1
        sheet=xlsfile.Worksheets('Sheet1')
      except:
        print '文件找开错误!'
        exit(1)
        print '程序正在自动退出。。。'
      if sheet.Cells(3,6).Value!=u'业务类型' or sheet.Cells(3,3).Value!=u'转办单位':
        print '您输入的表格已不是默认的表格,数据格式有误'
        exit(1) #这个判断是当文件中的特定列改变时,直接退出程序
      i=4
      dept=sheet.Cells(i,3).Value
      type=sheet.Cells(i,6).Value
      typelist=[] #用于存放数据的列表,下面就是取sheet表里的某一列数据
      deptlist=[] #用于存放转办单位的列表
      while type:
        typelist.append(type)
        deptlist.append(dept)
        i=i+1
        type=sheet.Cells(i,6).Value
        dept=sheet.Cells(i,3).Value
      #存放列的数据到二个列表中
      counts=len(typelist) #总件数
      if counts==0:
        print '输入的文件统计结果为0,是否文件的格式有误?'
        exit(1)
      typelist=[(i,typelist.count(i)) for i in set(typelist)]
      departmentlist=[]
      delchar='0123456789' #删除取出列表中有可能带数字 分开字段有空格的话
      for i in deptlist[:]:
        i=''.join([j for j in i if j not in delchar])
        while '.' in i: i=i.replace('.',' ')
        deptlist+=i.split()
      deptlist=deptlist[counts:]
      deptlist=[(i,deptlist.count(i)) for i in set(deptlist)]
      #下面是打印格式等 。。。
      print '\n'+50*'='
      print '\t信访件总数为%d件,下面是各分类件数' % counts,
      print '\n'+50*'='+'\n'
      for i in range(len(typelist)):
        print '\t',typelist[0],typelist[1],'\t',
        if i % 2 ==1 : print '\n'
      if flag==0:
        print '\n'+50*'='+'\n\t下面是转办单位的分类\n'+50*'='
        for i in range(len(deptlist)):
          print '\t',deptlist[0],deptlist[1],'\t',
          if i % 2 ==1 : print '\n'
    finally:
      xls.Quit()
    raw_input('\n\n'+50*'='+'\n请输入回车键退出程序!')
    print '正在退出程序,请稍等。。。'

希望本文所述对大家的Python程序设计有所帮助。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8