?半年以前做過(guò)server端生成excel的簡(jiǎn)單引擎,總感覺(jué)不夠輕便,尤其在一些固定格式,數(shù)據(jù)量又不是很大的情況下,上周寫了一
個(gè)根據(jù)表單數(shù)據(jù)在client端用js生成excle的demo,令我我激動(dòng)了半天------js太強(qiáng)了!
下面分享一下這段js:
?
?1
var?excel??=?new?ActiveXObject("Excel.Application");?//創(chuàng)建AX對(duì)象excel
?2
excel.visible?=true;?//設(shè)置excel可見(jiàn)屬性
?3
var?workbook?=?excel.Workbooks.Add;?//獲取workbook對(duì)象
?4
var?sheet1?=?xlBook.Worksheets(2);??//創(chuàng)建sheet1
?5
var?sheet2?=?xlBook.Worksheets(1);??//創(chuàng)建sheet2
?6
sheet1.Range(sheet1.Cells(1,1),sheet1.Cells(1,14)).mergecells=true;?//合并單元格
?7
sheet1.Range(sheet1.Cells(1,1),sheet1.Cells(1,14)).value="員工月考核成績(jī)";?//設(shè)置單元格內(nèi)容
?8
sheet1.Range(sheet1.Cells(1,1),sheet1.Cells(1,14)).Interior.ColorIndex=6;//設(shè)置底色?
?9
sheet1.Range(sheet1.Cells(1,1),sheet1.Cells(1,14)).Font.ColorIndex=5;//設(shè)置字體色?
10
sheet1.Rows(1).RowHeight?=?20;?//設(shè)置列高
11
sheet1.Rows(1).Font.Size=16;??//設(shè)置文字大小
12
sheet1.Rows(1).Font.Name="宋體";?//設(shè)置字體
13
//設(shè)置每一列的標(biāo)題
14
sheet1.Cells(2,1).Value="工程師考核項(xiàng)";
15
sheet1.Cells(2,2).Value="總分";
16
sheet1.Cells(2,3).Value="研發(fā)進(jìn)度";
17
sheet1.Cells(2,4).Value="出勤率";
18
sheet1.Cells(2,5).Value="執(zhí)行力";
19
sheet1.Cells(2,6).Value="責(zé)任心";
20
sheet1.Cells(2,7).Value="工作規(guī)范";
21
sheet1.Cells(2,8).Value="協(xié)作精神";
22
sheet1.Cells(2,9).Value="進(jìn)取性";
23
sheet1.Cells(2,10).Value="工作合理性";
24
sheet1.Cells(2,11).Value="解決問(wèn)題能力";
25
sheet1.Cells(2,12).Value="應(yīng)變能力";
26
sheet1.Cells(2,13).Value="人際技能";
27
sheet1.Cells(2,14).Value="理解能力";
28
//從表單循環(huán)控件中取出數(shù)據(jù)逐行插入對(duì)應(yīng)列的數(shù)據(jù)
29
var?count?=?sfform.GetAttributeValue('Repeat','Count');
30
for(var?line=1;line<=count;line++)
{?//begin?for
31
??var?name??=?sfform.GetValue('Repeat['+line+'].name');
32
??var?total=?sfform.GetValue('Repeat['+line+'].total');
33
??var?yfjd?=?sfform.GetValue('Repeat['+line+'].yfjd');
34
??var?jh?=?sfform.GetValue('Repeat['+line+'].jh');
35
??var?gcgj?=?sfform.GetValue('Repeat['+line+'].gcgj');
36
??var?cql?=?sfform.GetValue('Repeat['+line+'].cql');
37
??var?zxl?=?sfform.GetValue('Repeat['+line+'].zxl');
38
??var?gzgf?=?sfform.GetValue('Repeat['+line+'].gzgf');
39
??var?zrx?=?sfform.GetValue('Repeat['+line+'].zrx');
40
??var?xzjs?=?sfform.GetValue('Repeat['+line+'].xzjs');
41
??var?jqx?=?sfform.GetValue('Repeat['+line+'].jqx');
42
??var?gzhl?=?sfform.GetValue('Repeat['+line+'].gzh');
43
??var?jjwt?=?sfform.GetValue('Repeat['+line+'].jjwt');
44
??var?ybnl?=?sfform.GetValue('Repeat['+line+'].ybnl');
45
??var?rjjn?=?sfform.GetValue('Repeat['+line+'].rjjn');
46
??var?ljnl?=?sfform.GetValue('Repeat['+line+'].ljnl');
47
??sheet1.Cells(2+line,1).Value=name;
48
??sheet1.Cells(2+line,2).Value=total;
49
??sheet1.Cells(2+line,3).Value=yfjd;
50
??sheet1.Cells(2+line,4).Value=cql;
51
??sheet1.Cells(2+line,5).Value=zxl;
52
??sheet1.Cells(2+line,6).Value=gzgf;
53
??sheet1.Cells(2+line,7).Value=zrx;
54
??sheet1.Cells(2+line,8).Value=xzjs;
55
??sheet1.Cells(2+line,9).Value=jqx;
56
??sheet1.Cells(2+line,10).Value=gzhl;
57
??sheet1.Cells(2+line,11).Value=jjwt;
58
??sheet1.Cells(2+line,12).Value=ybnl;
59
??sheet1.Cells(2+line,13).Value=rjjn;
60
??sheet1.Cells(2+line,14).Value=ljnl;
61
62
}//end?for
63
64
基本的代碼已經(jīng)實(shí)現(xiàn)了,生成excel的格式和一些統(tǒng)計(jì)計(jì)算,用js寫應(yīng)該是很方便的,以后有例子再作補(bǔ)充。
從代碼角度來(lái)看這種寫法不是很靈活,但在能滿足用戶的需求前提下,這種生成方式還是很受歡迎的,給用戶的感覺(jué)就是輕
便。個(gè)人認(rèn)為簡(jiǎn)單就是美!