Chinaunix首页 | 论坛 | 博客
  • 博客访问: 171392
  • 博文数量: 84
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 940
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-12 20:30
文章分类

全部博文(84)

文章存档

2010年(18)

2009年(27)

2008年(39)

我的朋友
最近访客

分类: Python/Ruby

2009-12-31 14:16:48

    最近看到一个同事在统计一个月的数据量时,看到她是一个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    按回车键退出!")


阅读(936) | 评论(0) | 转发(0) |
0

上一篇:关于双屏显示的问题

下一篇:无题

给主人留下些什么吧!~~