Excel報表之js版
?半年以前做過server端生成excel的簡單引擎,總感覺不夠輕便,尤其在一些固定格式,數據量又不是很大的情況下,上周寫了一個根據表單數據在client端用js生成excle的demo,令我我激動了半天------js太強了!
下面分享一下這段js:
?
?1
var?excel??=?new?ActiveXObject("Excel.Application");?//創建AX對象excel
?2
excel.visible?=true;?//設置excel可見屬性
?3
var?workbook?=?excel.Workbooks.Add;?//獲取workbook對象
?4
var?sheet1?=?xlBook.Worksheets(2);??//創建sheet1
?5
var?sheet2?=?xlBook.Worksheets(1);??//創建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="員工月考核成績";?//設置單元格內容
?8
sheet1.Range(sheet1.Cells(1,1),sheet1.Cells(1,14)).Interior.ColorIndex=6;//設置底色?
?9
sheet1.Range(sheet1.Cells(1,1),sheet1.Cells(1,14)).Font.ColorIndex=5;//設置字體色?
10
sheet1.Rows(1).RowHeight?=?20;?//設置列高
11
sheet1.Rows(1).Font.Size=16;??//設置文字大小
12
sheet1.Rows(1).Font.Name="宋體";?//設置字體
13
//設置每一列的標題
14
sheet1.Cells(2,1).Value="工程師考核項";
15
sheet1.Cells(2,2).Value="總分";
16
sheet1.Cells(2,3).Value="研發進度";
17
sheet1.Cells(2,4).Value="出勤率";
18
sheet1.Cells(2,5).Value="執行力";
19
sheet1.Cells(2,6).Value="責任心";
20
sheet1.Cells(2,7).Value="工作規范";
21
sheet1.Cells(2,8).Value="協作精神";
22
sheet1.Cells(2,9).Value="進取性";
23
sheet1.Cells(2,10).Value="工作合理性";
24
sheet1.Cells(2,11).Value="解決問題能力";
25
sheet1.Cells(2,12).Value="應變能力";
26
sheet1.Cells(2,13).Value="人際技能";
27
sheet1.Cells(2,14).Value="理解能力";
28
//從表單循環控件中取出數據逐行插入對應列的數據
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

?2

?3

?4

?5

?6

?7

?8

?9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30



31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

基本的代碼已經實現了,生成excel的格式和一些統計計算,用js寫應該是很方便的,以后有例子再作補充。
從代碼角度來看這種寫法不是很靈活,但在能滿足用戶的需求前提下,這種生成方式還是很受歡迎的,給用戶的感覺就是輕
便。個人認為簡單就是美!
posted on 2006-08-05 11:14 beyondduke 閱讀(6604) 評論(7) 編輯 收藏