js 把数据生成word

  1. <script type="text/javascript">    
  2. var boxId=1;   
  3. var pageHtmlList = new Array(15);   
  4.     function htmlToWord(haveImg){   
  5.     var oWD = new ActiveXObject("Word.Application");//建立word对象   
  6.     var oDC = oWD.Documents.Add();//新建文档(对象)   
  7.     oWD.Application.Visible = true;//word可视   
  8.     var selection = oWD.Selection;//建立插入点对象   
  9.     createHead(selection);//插入文件头内容   
  10.     writeTOWord(1,selection,oDC,haveImg);//写入WORD文档内容   
  11.     }   
  12.   
  13. function createHead(selection){   
  14.     selection.Font.color = 16737846;//设置字体格式   
  15.     selection.Font.Bold = 9999998;   
  16.     selection.TypeText("金华移动市场运营分析周报");//标题   
  17.     setFormat(selection,"金华移动市场运营分析周报",22,1);//设置字体大小和是否居中   
  18.     selection.Font.Bold = 9999998;   
  19.     selection.TypeParagraph();//换行   
  20.     selection.TypeParagraph();     
  21.     selection.TypeText("市场经营部                                   <%=thisMt.getThisMonthDate()%>");   
  22.     setFormat(selection,"市场经营部                                   <%=thisMt.getThisMonthDate()%>",14,1);   
  23.     selection.TypeParagraph();   
  24.     selection.TypeParagraph();     
  25.     selection.TypeParagraph();   
  26.     selection.Font.color= -16777216;       
  27. }      
  28.        
  29. function writeTOWord(num,selection,oDC,haveImg){   
  30.         var temp =$("Navigation"+num);   
  31.         var tabledom =getChildren(temp,"TABLE");   
  32.         var imgdom = getChildren(temp,"IMG");   
  33.         fillcaption(num,selection);    
  34.         writeIn(tabledom,imgdom,selection,oDC,haveImg);   
  35.         selection.InsertBreak(7);   
  36.         if(num<boxId){   
  37.             showMessage(boxId,num);   
  38.             num++;   
  39.             writeTOWord(num,selection,oDC,haveImg);   
  40.         }   
  41.         else  
  42.             alert("周报生成完成");   
  43. }          
  44.   
  45. function writeIn(tabledom,imgdom,selection,oDC,haveImg){   
  46.     if(!(tabledom instanceof  Array)){   
  47.         createTable(oDC,selection,tabledom);   
  48.         fillTable(tabledom,selection.Tables(selection.Tables.Count),selection);   
  49.         if(typeof(imgdom)=="object" && haveImg ==true)   
  50.             fillImg(imgdom.src,selection);   
  51.     }   
  52.     if(tabledom instanceof  Array){   
  53.         var temp =tabledom.shift();   
  54.         createTable(oDC,selection,temp);   
  55.         fillTable(temp,selection.Tables(selection.Tables.Count),selection);   
  56.         if(typeof(imgdom)=="object" && haveImg ==true)   
  57.             fillImg(imgdom.src,selection);   
  58.         temp =tabledom.shift();   
  59.         createTable(oDC,selection,temp);   
  60.         fillTable(temp,selection.Tables(selection.Tables.Count),selection);   
  61.     }   
  62. }   
  63.   
  64. function createTable(wordDocument,selection,tabledom){   
  65.     var rownum=tabledom.rows.length;//获取行数   
  66.     var cellnum=0;   
  67.     var tempdom=null;   
  68.     for(i=0;i<tabledom.rows.length;i++){//根据行数循环   
  69.         if(tabledom.rows(i).cells.length>cellnum){   
  70.             cellnum=tabledom.rows(i).cells.length;//获取最大的列数   
  71.         }   
  72.     }      
  73.     wordDocument.Tables.Add(selection.Range,rownum,cellnum);//新建表格,行数为talbe的行数,列数取最大的列数   
  74.     tempdom=selection.Tables(selection.Tables.Count);   
  75.     if(cellnum>9){   
  76.         tempdom.PreferredWidthType =2;   
  77.         tempdom.PreferredWidth =133;   
  78.     }   
  79. }   
  80.        
  81. function getChildren(divDom,childType){//根据childType从div里面取出子元素   
  82.     try{   
  83.     var doms = divDom.children;   
  84.     }catch(e){   
  85.         alert(childType);   
  86.     }   
  87.     var returnDom =[];   
  88.     for(i=0;i<doms.length;i++){   
  89.         if(doms[i].tagName==childType){   
  90.             returnDom.push(doms[i]);   
  91.         }      
  92.     }      
  93.     if(returnDom.length>1){   
  94.         return returnDom;   
  95.     }else  
  96.         return returnDom.shift();   
  97. }      
  98.   
  99. function fillcaption(num,selection){//插入标题   
  100.     if(num==1){   
  101.         selection.TypeText("一、市场规模分析");   
  102.         setFormat(selection,"一、市场规模分析",12,0);   
  103.         selection.TypeParagraph();   
  104.         selection.TypeText("(一)运营收入情况分析");   
  105.         setFormat(selection,"(一)运营收入情况分析",12,0);   
  106.         selection.TypeParagraph();   
  107.     }   
  108.     if(num==3){   
  109.         selection.TypeText("(二)通话用户增长");   
  110.         setFormat(selection,"(二)通话用户增长",12,0);   
  111.         selection.TypeParagraph();   
  112.     }   
  113.     if(num==5){   
  114.         selection.TypeText("(三)新增放号");   
  115.         setFormat(selection,"(三)新增放号",12,0);   
  116.         selection.TypeParagraph();   
  117.     }   
  118.     if(num==7){   
  119.         selection.TypeText("二、市场份额分析");   
  120.         setFormat(selection,"二、市场份额分析",12,0);   
  121.         selection.TypeParagraph();   
  122.         selection.TypeText("(一)新增市场");   
  123.         setFormat(selection,"(一)新增市场",12,0);   
  124.         selection.TypeParagraph();   
  125.     }   
  126.     if(num==9){   
  127.         selection.TypeText("(二)存量(通话)市场");   
  128.         setFormat(selection,"(二)存量(通话)市场",12,0);   
  129.         selection.TypeParagraph();   
  130.     }   
  131.     if(num==13){   
  132.         selection.TypeText("三、市场质量分析");   
  133.         setFormat(selection,"三、市场质量分析",12,0);   
  134.         selection.TypeParagraph();   
  135.         selection.TypeText("(一)<%=thisMt.getThisMonth()%>月份离网数据");   
  136.         setFormat(selection,"(一)<%=thisMt.getThisMonth()%>月份离网数据",12,0);   
  137.         selection.TypeParagraph();   
  138.     }      
  139.     var caption =$("caption"+num);   
  140.     selection.TypeText(caption.innerHTML);//标题   
  141.     setFormat(selection,caption.innerHTML,12,0);   
  142.     selection.TypeParagraph();   
  143. }   
  144.   
  145. function fillImg(url,selection){//根据图片地址URL写入WORD   
  146.     selection.TypeParagraph();   
  147.     selection.InlineShapes.AddPicture(url,false,true);   
  148.     selection.ParagraphFormat.Alignment =1;   
  149.     selection.TypeParagraph();   
  150. }   
  151.   
  152. function fillTable(htmltable,wordTable,selection){//根据HTMLTABLE的内容写入WORD   
  153.     var lastrows=0;   
  154.     var rownum=htmltable.rows.length;   
  155.     if(wordTable.Style !="网格型")//把表格设置成网格型   
  156.         wordTable.Style = "网格型";       
  157.     for(i=0;i<rownum;i++){//循环设置表格,先根据行循环   
  158.         var rows=0;   
  159.         for(j=0;j<htmltable.rows(i).cells.length;j++){//根据每行的列循环   
  160.             rows+=cellMerge(htmltable,selection,htmltable.rows(i).cells(j));//合并单元格,记录改变的表格位置   
  161.             selection.Font.Name = "宋体";//设置字体为宋体   
  162.             selection.ParagraphFormat.Alignment =1;   
  163.             selection.Font.Size = 9;   
  164.             selection.TypeText(htmltable.rows(i).cells(j).innerText);//使用插入点插入内容   
  165.             selection.MoveRight(1,1);//下一格   
  166.         }   
  167.     lastrows=gotoNextRow(rows,lastrows,selection,htmltable.rows(i).cells);     
  168.     }   
  169.     wordTable.Style.ParagraphFormat.Alignment= 1;      
  170.     selection.TypeParagraph();   
  171.        
  172. }   
  173.   
  174. function gotoNextRow(rows,lastrows,selection,cells){   
  175.     if(rows==0 && lastrows==0){//本行以及上一行都没有跨行的单元格,则移动到本行首,同时下移到第二行   
  176.         selection.MoveLeft(12,cells.length);   
  177.         selection.MoveDown(5,1);//移动到下一行,wbline=5就是下一行   
  178.     }   
  179.     if(lastrows >0){//如果上一行有跨行的单元格,则移动到本行首,暂时只能解决第一行为跨行格的问题   
  180.         selection.MoveLeft(12,cells.length+lastrows);   
  181.         selection.MoveDown(5,1);   
  182.         lastrows=0;//移动结束清零   
  183.     }   
  184.     if(rows>0){//如果本行内有跨行,如此处理   
  185.         selection.MoveRight(12,rows+1);   
  186.         lastrows=rows;   
  187.     }   
  188.     return lastrows;   
  189. }   
  190.   
  191. function cellMerge(htmltable,selection,cell){   
  192.     var rows=0;   
  193.     if(cell.rowSpan >1){//如果是多行表格,合并单元格,并且记录下行数   
  194.         selection.MoveDown(5,cell.rowSpan-1,1);    
  195.         selection.Cells.Merge();       
  196.         rows=cell.rowSpan-1;   
  197.     }   
  198.     if(cell.colSpan >1){//如果是多列表格,合并单元格   
  199.         selection.MoveRight(1,cell.colSpan,1);     
  200.         selection.Cells.Merge();   
  201.     }   
  202.     return rows;   
  203. }   
  204.   
  205. function setFormat(selection,text,fontSize,align){   
  206. selection.MoveLeft(1,text.length,1);//根据内容的长度选取字体,moveXXX方法的第三个参数为1做为选取   
  207. selection.Font.Name = "宋体";//设置字体为宋体   
  208. selection.Font.Size = fontSize;//设置字符大小为9PX,其实就是小五   
  209. selection.MoveRight(1,1);//右移一个字符,其实就是取消选定   
  210. selection.ParagraphFormat.Alignment= align;//居中对齐   
  211. }   
  212.     
  213. function $(name){return document.getElementById(name);}   
  214.   
  215. function createXmlhttp(){   
  216.         var http_request = false;   
  217.         //开始初始化XMLHttpRequest对象   
  218.         if(window.XMLHttpRequest) { //Mozilla 浏览器   
  219.             http_request = new XMLHttpRequest();   
  220.         }   
  221.         else if (window.ActiveXObject) { // IE浏览器   
  222.             try {   
  223.                 http_request = new ActiveXObject("Msxml2.XMLHTTP");   
  224.             } catch (e) {   
  225.                 try {   
  226.                     http_request = new ActiveXObject("Microsoft.XMLHTTP");   
  227.                 } catch (e) {}   
  228.             }   
  229.         }   
  230.         if (!http_request) { // 异常,创建对象实例失败   
  231.             window.alert("不能创建XMLHttpRequest对象实例.");   
  232.             return false;   
  233.         }   
  234.         http_request.onreadystatechange = processRequest ;   
  235.            
  236.         return http_request;   
  237. }   
  238.   
  239. function sendRequest(url,id) {   
  240.         xmlrequest = createXmlhttp();   
  241.         boxId=id;   
  242.         xmlrequest.open("GET", url, true);   
  243.         xmlrequest.send(null);   
  244. }      
  245.   
  246. function processRequest() {   
  247.     if (xmlrequest.readyState == 4) { // 判断对象状态   
  248.             if (xmlrequest.status == 200) {    
  249.                 processDiv(xmlrequest.responseTEXT);                   
  250.             }   
  251.     }   
  252. }    
  253.   
  254. function showMessage(num1,num2){//显示已经显示在页面上的表格,和已经导出   
  255.     $("messageBox").innerText="已经生成"+num1+"份表报,生成完毕可以执行导出。";   
  256.     if(num1>=13){   
  257.         $("messageBox").innerText="成功生成全部表报,成功导出"+num2+"份表报。";   
  258.         $("wordButton").disabled=false;   
  259.         $("excelButton").disabled=false;   
  260.         $("wordButtonNoImg").disabled=false;   
  261.     }      
  262.     if(num2>=13){   
  263.         $("messageBox").innerText="成功生成全部表报,成功导出全部表报。";   
  264.     }      
  265. }   
  266.   
  267. function processDiv(responseText){   
  268.     $("Navigation"+boxId).innerHTML=responseText;   
  269.     if(boxId<14){//当前的取出后,继续操作取下一个报表的table和图表   
  270.         showMessage(boxId,0);   
  271.         boxId++;   
  272.         sendRequest(pageUrlList[boxId],boxId);   
  273.     }   
  274. }   
  275.   
  276. function getDeptChind(url){   
  277.     thisId=url;   
  278.     sendRequest(url);   
  279. }   
  280.   
  281. var pageUrlList = new Array();   
  282. pageUrlList[1]="provinceDayRevenue.jsp?date1=<%=thisMt.getThisMonthDate()%>";   
  283. pageUrlList[2]="cityDayRevenue.jsp?date1=<%=thisMt.getThisMonthDate()%>";   
  284. pageUrlList[3]="provinceNewUser.jsp?date1=<%=thisMt.getThisMonthDate()%>";   
  285. pageUrlList[4]="cityNewUser.jsp?date1=<%=thisMt.getThisMonthDate()%>";   
  286. pageUrlList[5]="provinceNewBill.jsp?date1=<%=thisMt.getThisMonthDate()%>";   
  287. pageUrlList[6]="cityNewBill.jsp?date1=<%=thisMt.getThisMonthDate()%>";   
  288. pageUrlList[7]="provinceQuotient.jsp?date1=<%=thisMt.getThisMonthDate()%>";   
  289. pageUrlList[8]="cityQuotient.jsp?date1=<%=thisMt.getThisMonthDate()%>";   
  290. pageUrlList[9]="provinceCallQuotient.jsp?date1=<%=thisMt.getThisMonthDate()%>";   
  291. pageUrlList[10]="provinceOnlyIncrease.jsp?date1=<%=thisMt.getThisMonthDate()%>";   
  292. pageUrlList[11]="cityCallQuotient.jsp?date1=<%=thisMt.getThisMonthDate()%>";   
  293. pageUrlList[12]="cityOnlyIncrease.jsp?date1=<%=thisMt.getThisMonthDate()%>";   
  294. pageUrlList[13]="provinceUserAway.jsp?date1=<%=thisMt.getThisMonthDate()%>";   
  295. pageUrlList[14]="cityUserAway.jsp?date1=<%=thisMt.getThisMonthDate()%>";   
  296. sendRequest(pageUrlList[1],1);   
  297.  </script>   
  298.  <script type="text/javascript">   
  299. function tableToExcel() {    
  300. window.clipboardData.setData("Text",document.all('result').outerHTML);   
  301. try  
  302. {   
  303. var ExApp = new ActiveXObject("Excel.Application")   
  304. var ExWBk = ExApp.workbooks.add()   
  305. var ExWSh = ExWBk.worksheets(1)   
  306. ExApp.DisplayAlerts = false  
  307. ExApp.visible = true  
  308. }     
  309. catch(e)   
  310. {   
  311. alert("您的电脑没有安装Microsoft Excel软件!")   
  312. return false  
  313. }    
  314.  ExWBk.worksheets(1).Paste;   
  315.  }   
  316.  </script>  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值