1
[图片]import os;
2
[图片]import sys;
3
[图片]import time;
4
[图片]import datetime;
5
[图片]#请先安装对应着你自己的Python版本的PythonWin32
6
[图片]import win32com.client;
7
[图片] 8
[图片] 9
[图片]mapper = {};
10
[图片]11
[图片]app = win32com.client.Dispatch("Excel.Application");
12
[图片]PipeOut = os.popen("dir *.xls /B");
13
[图片]FileList = PipeOut.readlines();
14
[图片]PipeOut = os.popen("cd");
15
[图片]CurDic = PipeOut.readline();
16
[图片]CurDic = CurDic[:-1] + "\\";#去处末尾的\n
17
[图片]print "当前工作目录为"+CurDic;
18
[图片]19
[图片] #读取每个文件的时间和储存相应的COM接口
20
[图片]21
[图片]for filename in FileList:
22
[图片] filename = CurDic+filename[:-1];
23
[图片] print filename;
24
[图片] Doc = app.Workbooks.Open(filename);
25
[图片] Sheet = Doc.Sheets(1);
26
[图片] Time = Sheet.Cells(2,5);
27
[图片] print type(Time);
28
[图片] TimeKey = str(Time);
29
[图片] print TimeKey;
30
[图片] if mapper.has_key(TimeKey):
31
[图片] mapper[TimeKey].append(Sheet);
32
[图片] else :
33
[图片] mapper[TimeKey] = [];
34
[图片] mapper[TimeKey].append(Sheet);
35
[图片] #print mapper;
36
[图片]37
[图片]38
[图片] #生成新的统计总表
39
[图片] 40
[图片] #开始处理mapper 每次从一个自表中读取2x20个数据,然后和总表相加
41
[图片]print "-------------------------------------";
42
[图片]Protetype = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
43
[图片]a = 0;
44
[图片]b = 0;
45
[图片]c = 0;
46
[图片]47
[图片]for k,v in mapper.items():
48
[图片] print "//////////////////////////////////"
49
[图片] a+=1;
50
[图片] Count = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
51
[图片] Benefit = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
52
[图片] Name = [u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u"",u""];
53
[图片] #print Count;
54
[图片] #print Benefit;
55
[图片] #Total = app.Workbooks.Open(CurDic+"Template\\TotalTemplate.xls");
56
[图片] print "How manu Sheets in this List ? ",len(v);
57
[图片] for sht in v:
58
[图片] b+=1;
59
[图片] _Count = sht.Range("C4:C23").Value;
60
[图片] _Benefit = sht.Range("F4:F23").Value;
61
[图片] _Name = sht.Range("B4:B23").Value;
62
[图片] #print _Count;
63
[图片] #print _Benefit;
64
[图片] assert(len(_Count) == len(_Benefit));
65
[图片] for i in range(0,len(_Count)):
66
[图片] c+=1;
67
[图片] Count[i] = _Count[i][0] + Count[i];
68
[图片] Benefit[i] = _Benefit[i][0] + Benefit[i];
69
[图片] Name[i] = _Name[i][0];
70
[图片] #以上作为储存总表项的数据
71
[图片] Total = app.Workbooks.Open(CurDic+"Template\\TotalTemplate.xls");
72
[图片] TotalSheet = Total.Sheets(1);
73
[图片] _Time = k[:k.find(" ")];
74
[图片] _Time = _Time.replace("/","-");
75
[图片] print _Time;
76
[图片] print Count;
77
[图片] print Benefit;
78
[图片] #TotalSheet.Cells(2,2).Value = _Time;
79
[图片] for i in range(0,len(Count)):
80
[图片] TotalSheet.Cells(4+i,3).Value = Count[i];#填充数量
81
[图片] TotalSheet.Cells(4+i,6).Value = Benefit[i];#填充利润
82
[图片] TotalSheet.Cells(4+i,2).Value = Name[i];#填充货物名称
83
[图片]84
[图片] #保存总表
85
[图片] Total.SaveAs(CurDic+_Time+"统计总表.xls");
86
[图片] del Count,Benefit;
87
[图片]print "++++++++++++++++++++++++++++"
88
[图片]print a,b,c;
89
[图片]app.Quit();
90
[图片]app = None;
91
[图片]
使用方法,先安装Python 2.4和PythonWin For 2.4。然后把这个脚本拷贝到分表的文件夹下,然后运行(调试),自动生成与日期相关的总表。效果图如下: