本文实例讲述了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程序设计有所帮助。
下一篇:Python自动扫雷实现方法