Excel報(bào)表之js版

          ?半年以前做過(guò)server端生成excel的簡(jiǎn)單引擎,總感覺(jué)不夠輕便,尤其在一些固定格式,數(shù)據(jù)量又不是很大的情況下,上周寫了一

          個(gè)根據(jù)表單數(shù)據(jù)在client端用js生成excle的demo,令我我激動(dòng)了半天------js太強(qiáng)了!

          下面分享一下這段js:
          ?
          ?1var?excel??=?new?ActiveXObject("Excel.Application");?//創(chuàng)建AX對(duì)象excel
          ?2excel.visible?=true;?//設(shè)置excel可見(jiàn)屬性
          ?3var?workbook?=?excel.Workbooks.Add;?//獲取workbook對(duì)象
          ?4var?sheet1?=?xlBook.Worksheets(2);??//創(chuàng)建sheet1
          ?5var?sheet2?=?xlBook.Worksheets(1);??//創(chuàng)建sheet2
          ?6sheet1.Range(sheet1.Cells(1,1),sheet1.Cells(1,14)).mergecells=true;?//合并單元格
          ?7sheet1.Range(sheet1.Cells(1,1),sheet1.Cells(1,14)).value="員工月考核成績(jī)";?//設(shè)置單元格內(nèi)容
          ?8sheet1.Range(sheet1.Cells(1,1),sheet1.Cells(1,14)).Interior.ColorIndex=6;//設(shè)置底色?
          ?9sheet1.Range(sheet1.Cells(1,1),sheet1.Cells(1,14)).Font.ColorIndex=5;//設(shè)置字體色?
          10sheet1.Rows(1).RowHeight?=?20;?//設(shè)置列高
          11sheet1.Rows(1).Font.Size=16;??//設(shè)置文字大小
          12sheet1.Rows(1).Font.Name="宋體";?//設(shè)置字體
          13//設(shè)置每一列的標(biāo)題
          14sheet1.Cells(2,1).Value="工程師考核項(xiàng)";
          15sheet1.Cells(2,2).Value="總分";
          16sheet1.Cells(2,3).Value="研發(fā)進(jìn)度";
          17sheet1.Cells(2,4).Value="出勤率";
          18sheet1.Cells(2,5).Value="執(zhí)行力";
          19sheet1.Cells(2,6).Value="責(zé)任心";
          20sheet1.Cells(2,7).Value="工作規(guī)范";
          21sheet1.Cells(2,8).Value="協(xié)作精神";
          22sheet1.Cells(2,9).Value="進(jìn)取性";
          23sheet1.Cells(2,10).Value="工作合理性";
          24sheet1.Cells(2,11).Value="解決問(wèn)題能力";
          25sheet1.Cells(2,12).Value="應(yīng)變能力";
          26sheet1.Cells(2,13).Value="人際技能";
          27sheet1.Cells(2,14).Value="理解能力";
          28//從表單循環(huán)控件中取出數(shù)據(jù)逐行插入對(duì)應(yīng)列的數(shù)據(jù)
          29var?count?=?sfform.GetAttributeValue('Repeat','Count');
          30for(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)單就是美!

          posted on 2006-08-05 11:14 beyondduke 閱讀(6604) 評(píng)論(7)  編輯  收藏

          評(píng)論

          # re: Excel報(bào)表之js版 2006-08-06 07:45 William Yang

          調(diào)用 ActiveX 這樣太蠢了。  回復(fù)  更多評(píng)論   

          # re: Excel報(bào)表之js版 2006-08-07 09:31 Compass

          不是js強(qiáng),是IE強(qiáng),不懂就別上首頁(yè)  回復(fù)  更多評(píng)論   

          # re: Excel報(bào)表之js版 2006-08-07 15:13 lulin

          代碼第一行執(zhí)行不了,報(bào)“Automation服務(wù)器不能創(chuàng)建對(duì)象”.如果解決?  回復(fù)  更多評(píng)論   

          # re: Excel報(bào)表之js版 2006-08-10 08:25 毒素大

          都是ActiveX的功勞,哪是js強(qiáng)啊  回復(fù)  更多評(píng)論   

          # re: Excel報(bào)表之js版 2006-08-10 08:26 毒素大

          @lulin
          重新注冊(cè)下插件就行了  回復(fù)  更多評(píng)論   

          # re: Excel報(bào)表之js版 2006-08-13 02:45 roc

          樓主有沒(méi)有遇到什么問(wèn)題了,我曾經(jīng)也用js實(shí)現(xiàn)過(guò),但這樣做有弊端,客戶端必須設(shè)置IE的安全級(jí)別。所以在用戶體驗(yàn)性上來(lái)說(shuō),是不可取的方式。。。。  回復(fù)  更多評(píng)論   

          # re: Excel報(bào)表之js版[未登錄](méi) 2015-12-15 15:37 空指針

          第四行和第五行的 xlBook 哪里來(lái)的  回復(fù)  更多評(píng)論   


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2006年8月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導(dǎo)航

          統(tǒng)計(jì)

          公告


          MSN聯(lián)系

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          我的連接

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 霍林郭勒市| 金昌市| 毕节市| 盘山县| 天长市| 嘉峪关市| 泰安市| 云浮市| 静安区| 临澧县| 噶尔县| 淳安县| 九寨沟县| 德格县| 阿克苏市| 万荣县| 周口市| 安顺市| 布拖县| 汝阳县| 炎陵县| 商水县| 汝州市| 观塘区| 都兰县| 江永县| 东乌珠穆沁旗| 莱西市| 离岛区| 东明县| 新营市| 建水县| 建昌县| 桐梓县| 高阳县| 东宁县| 东阿县| 德庆县| 开阳县| 黄平县| 福贡县|