(转自--http://www.blogjava.net/beyondduke/archive/2006/08/05/61911.html)
半年以前做过server端生成excel的简单引擎,总感觉不够轻便,尤其在一些固定格式,数据量又不是很大的情况下,上周写了一
个根据表单数据在client端用js生成excle的demo,令我我激动了半天------js太强了!
下面分享一下这段js:   
 1 var excel  = new ActiveXObject("Excel.Application"); //创建AX对象excel
var excel  = new ActiveXObject("Excel.Application"); //创建AX对象excel
 2 excel.visible =true; //设置excel可见属性
excel.visible =true; //设置excel可见属性
 3 var workbook = excel.Workbooks.Add; //获取workbook对象
var workbook = excel.Workbooks.Add; //获取workbook对象
 4 var sheet1 = xlBook.Worksheets(2);  //创建sheet1
var sheet1 = xlBook.Worksheets(2);  //创建sheet1
 5 var sheet2 = xlBook.Worksheets(1);  //创建sheet2
var sheet2 = xlBook.Worksheets(1);  //创建sheet2
 6 sheet1.Range(sheet1.Cells(1,1),sheet1.Cells(1,14)).mergecells=true; //合并单元格
sheet1.Range(sheet1.Cells(1,1),sheet1.Cells(1,14)).mergecells=true; //合并单元格
 7 sheet1.Range(sheet1.Cells(1,1),sheet1.Cells(1,14)).value="员工月考核成绩"; //设置单元格内容
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;//设置底色
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;//设置字体色
sheet1.Range(sheet1.Cells(1,1),sheet1.Cells(1,14)).Font.ColorIndex=5;//设置字体色 
10 sheet1.Rows(1).RowHeight = 20; //设置列高
sheet1.Rows(1).RowHeight = 20; //设置列高
11 sheet1.Rows(1).Font.Size=16;  //设置文字大小
sheet1.Rows(1).Font.Size=16;  //设置文字大小
12 sheet1.Rows(1).Font.Name="宋体"; //设置字体
sheet1.Rows(1).Font.Name="宋体"; //设置字体
13 //设置每一列的标题
//设置每一列的标题
14 sheet1.Cells(2,1).Value="工程师考核项";
sheet1.Cells(2,1).Value="工程师考核项";
15 sheet1.Cells(2,2).Value="总分";
sheet1.Cells(2,2).Value="总分";
16 sheet1.Cells(2,3).Value="研发进度";
sheet1.Cells(2,3).Value="研发进度";
17 sheet1.Cells(2,4).Value="出勤率";
sheet1.Cells(2,4).Value="出勤率";
18 sheet1.Cells(2,5).Value="执行力";
sheet1.Cells(2,5).Value="执行力";
19 sheet1.Cells(2,6).Value="责任心";
sheet1.Cells(2,6).Value="责任心";
20 sheet1.Cells(2,7).Value="工作规范";
sheet1.Cells(2,7).Value="工作规范";
21 sheet1.Cells(2,8).Value="协作精神";
sheet1.Cells(2,8).Value="协作精神";
22 sheet1.Cells(2,9).Value="进取性";
sheet1.Cells(2,9).Value="进取性";
23 sheet1.Cells(2,10).Value="工作合理性";
sheet1.Cells(2,10).Value="工作合理性";
24 sheet1.Cells(2,11).Value="解决问题能力";
sheet1.Cells(2,11).Value="解决问题能力";
25 sheet1.Cells(2,12).Value="应变能力";
sheet1.Cells(2,12).Value="应变能力";
26 sheet1.Cells(2,13).Value="人际技能";
sheet1.Cells(2,13).Value="人际技能";
27 sheet1.Cells(2,14).Value="理解能力";
sheet1.Cells(2,14).Value="理解能力";
28 //从表单循环控件中取出数据逐行插入对应列的数据
//从表单循环控件中取出数据逐行插入对应列的数据
29 var count = sfform.GetAttributeValue('Repeat','Count');
var count = sfform.GetAttributeValue('Repeat','Count');
30
 for(var line=1;line<=count;line++)
for(var line=1;line<=count;line++) { //begin for
{ //begin for
31 var name  = sfform.GetValue('Repeat['+line+'].name');
  var name  = sfform.GetValue('Repeat['+line+'].name');
32 var total= sfform.GetValue('Repeat['+line+'].total');
  var total= sfform.GetValue('Repeat['+line+'].total');
33 var yfjd = sfform.GetValue('Repeat['+line+'].yfjd');
  var yfjd = sfform.GetValue('Repeat['+line+'].yfjd');
34 var jh = sfform.GetValue('Repeat['+line+'].jh');
  var jh = sfform.GetValue('Repeat['+line+'].jh');
35 var gcgj = sfform.GetValue('Repeat['+line+'].gcgj');
  var gcgj = sfform.GetValue('Repeat['+line+'].gcgj');
36 var cql = sfform.GetValue('Repeat['+line+'].cql');
  var cql = sfform.GetValue('Repeat['+line+'].cql');
37 var zxl = sfform.GetValue('Repeat['+line+'].zxl');
  var zxl = sfform.GetValue('Repeat['+line+'].zxl');
38 var gzgf = sfform.GetValue('Repeat['+line+'].gzgf');
  var gzgf = sfform.GetValue('Repeat['+line+'].gzgf');
39 var zrx = sfform.GetValue('Repeat['+line+'].zrx');
  var zrx = sfform.GetValue('Repeat['+line+'].zrx');
40 var xzjs = sfform.GetValue('Repeat['+line+'].xzjs');
  var xzjs = sfform.GetValue('Repeat['+line+'].xzjs');
41 var jqx = sfform.GetValue('Repeat['+line+'].jqx');
  var jqx = sfform.GetValue('Repeat['+line+'].jqx');
42 var gzhl = sfform.GetValue('Repeat['+line+'].gzh');
  var gzhl = sfform.GetValue('Repeat['+line+'].gzh');
43 var jjwt = sfform.GetValue('Repeat['+line+'].jjwt');
  var jjwt = sfform.GetValue('Repeat['+line+'].jjwt');
44 var ybnl = sfform.GetValue('Repeat['+line+'].ybnl');
  var ybnl = sfform.GetValue('Repeat['+line+'].ybnl');
45 var rjjn = sfform.GetValue('Repeat['+line+'].rjjn');
  var rjjn = sfform.GetValue('Repeat['+line+'].rjjn');
46 var ljnl = sfform.GetValue('Repeat['+line+'].ljnl');
  var ljnl = sfform.GetValue('Repeat['+line+'].ljnl');
47 sheet1.Cells(2+line,1).Value=name;
  sheet1.Cells(2+line,1).Value=name;
48 sheet1.Cells(2+line,2).Value=total;
  sheet1.Cells(2+line,2).Value=total;
49 sheet1.Cells(2+line,3).Value=yfjd;
  sheet1.Cells(2+line,3).Value=yfjd;
50 sheet1.Cells(2+line,4).Value=cql;
  sheet1.Cells(2+line,4).Value=cql;
51 sheet1.Cells(2+line,5).Value=zxl;
  sheet1.Cells(2+line,5).Value=zxl;
52 sheet1.Cells(2+line,6).Value=gzgf;
  sheet1.Cells(2+line,6).Value=gzgf;
53 sheet1.Cells(2+line,7).Value=zrx;
  sheet1.Cells(2+line,7).Value=zrx;
54 sheet1.Cells(2+line,8).Value=xzjs;
  sheet1.Cells(2+line,8).Value=xzjs;
55 sheet1.Cells(2+line,9).Value=jqx;
  sheet1.Cells(2+line,9).Value=jqx;
56 sheet1.Cells(2+line,10).Value=gzhl;
  sheet1.Cells(2+line,10).Value=gzhl;
57 sheet1.Cells(2+line,11).Value=jjwt;
  sheet1.Cells(2+line,11).Value=jjwt;
58 sheet1.Cells(2+line,12).Value=ybnl;
  sheet1.Cells(2+line,12).Value=ybnl;
59 sheet1.Cells(2+line,13).Value=rjjn;
  sheet1.Cells(2+line,13).Value=rjjn;
60 sheet1.Cells(2+line,14).Value=ljnl;
  sheet1.Cells(2+line,14).Value=ljnl;
61
62 }//end for
}//end for
63
64
 基本的代码已经实现了,生成excel的格式和一些统计计算,用js写应该是很方便的,以后有例子再作补充。
从代码角度来看这种写法不是很灵活,但在能满足用户的需求前提下,这种生成方式还是很受欢迎的,给用户的感觉就是轻
便。个人认为简单就是美!