最近看到一个同事在统计一个月的数据量时,看到她是一个wps文件打开来记下几个特定的数,然后是当月的每天的一个文件看过来,然后算出总和,我看她一个个文件打开来很麻烦,最近刚好在看python,想了下不知道有没有办法 ,能过这二天的努力,终于帮它解决了这个问题
用到了一个第三方的库,win32com
下面是代码 :
# coding=gbk
import os
import string
import win32com.client
os.system("cls")
print '''
此程序用来统计月业务类型日汇总表的总件数
用法:把你要统计的月的文件夹的地址复制进来就可以了
比如把 \\WWW-3F7334AFD8F\SharedDocs\业务类型日汇总表\2009年\2009年10月业务类型日汇总表
贴进来回车就可以了,这个直接从文件浏览中的地址栏上复制一下不可以了
'''
filename = raw_input( "\n\n\n请输入你要统计的文件夹地址:" )
filename1=filename
filename = 'dir '+filename+'\\*业务类型.doc >data.txt' #解析整个文件 夹下的文件名存入data.txt文件
os.system(filename)
data = open("data.txt",'r') #打开data.txt文件,直接取出要处理的文件 名,存入数组fnames
fnames=[]
for eachline in data:
if '业务类型.doc' in eachline: #这个是筛选,只处理带业务类型.doc的文档
fnames.append(string.split(eachline)[-1:][0]) #然后取出doc中dir出来的结果的最后一排文件 名
##for s in fnames:
## print '%s' % s
print '*'*80
print '请稍候,正在统计数据中。。。'
print '*'*80
##循环整个文件夹下取出来的文件名数组,依次打开每个文件
##取出每个文件的表格中的特定几个数字,算其总数
#############################################
sum1=sum2=sum3=sum4=0 #sum这些数字为要统计特定数字
wps=win32com.client.Dispatch("wps.Application")
for name in fnames:
filename=filename1+"\\"+name
doc=wps.Documents.Open(FileName=filename)
n1=doc.Tables[0].Rows[1].Cells[1].Range.Text #这部分是算几个数字,每个文件里面取出来,算总和
n2=doc.Tables[0].Rows[1].Cells[3].Range.Text #这里可能可以简化它
n3=doc.Tables[0].Rows[1].Cells[5].Range.Text
n4=doc.Tables[0].Rows[1].Cells[7].Range.Text
n=[n1,n2,n3,n4]
for i in range(4):
if n[i] in string.whitespace: #这里处理表格中如果没有数据默认为0
n[i]=0
sum1=sum1+int(n[0])
sum2=sum2+int(n[1])
sum3=sum3+int(n[2])
sum4=sum4+int(n[3])
doc.Close()
wps.Quit()
os.system("cls")
print '\n\n\n总受理件数\t即刻答复累计\t中心交办累计\t网上交办累计'
print ' ',sum1,'\t ',sum2,'\t ',sum3,'\t\t ',sum4
#print doc.Tables[0].Rows[1].Cells[5].Range.Text
data.close()
os.system("del data.txt")
raw_input("\n\n 按回车键退出!")
阅读(6202) | 评论(0) | 转发(0) |