Python实现对excel文件列表值进行统计的方法
本文实例讲述了Python实现对excel文件列表值进行统计的方法。分享给大家供大家参考。具体如下:
#!/usr/bin/envpython
#coding=gbk
#此PY用来统计一个execl文件中的特定一列的值的分类
importwin32com.client
filename=raw_input("请输入要统计文件的详细地址:")
flag=0#用于判断文件名如果不带‘日'就为0
if'\xc8\xd5'infilename:flag=1
print50*'='+'\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'程序正在自动退出。。。'
ifsheet.Cells(3,6).Value!=u'业务类型'orsheet.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=[]#用于存放转办单位的列表
whiletype:
typelist.append(type)
deptlist.append(dept)
i=i+1
type=sheet.Cells(i,6).Value
dept=sheet.Cells(i,3).Value
#存放列的数据到二个列表中
counts=len(typelist)#总件数
ifcounts==0:
print'输入的文件统计结果为0,是否文件的格式有误?'
exit(1)
typelist=[(i,typelist.count(i))foriinset(typelist)]
departmentlist=[]
delchar='0123456789'#删除取出列表中有可能带数字分开字段有空格的话
foriindeptlist[:]:
i=''.join([jforjiniifjnotindelchar])
while'.'ini:i=i.replace('.','')
deptlist+=i.split()
deptlist=deptlist[counts:]
deptlist=[(i,deptlist.count(i))foriinset(deptlist)]
#下面是打印格式等。。。
print'\n'+50*'='
print'\t信访件总数为%d件,下面是各分类件数'%counts,
print'\n'+50*'='+'\n'
foriinrange(len(typelist)):
print'\t',typelist[0],typelist[1],'\t',
ifi%2==1:print'\n'
ifflag==0:
print'\n'+50*'='+'\n\t下面是转办单位的分类\n'+50*'='
foriinrange(len(deptlist)):
print'\t',deptlist[0],deptlist[1],'\t',
ifi%2==1:print'\n'
finally:
xls.Quit()
raw_input('\n\n'+50*'='+'\n请输入回车键退出程序!')
print'正在退出程序,请稍等。。。'
希望本文所述对大家的Python程序设计有所帮助。