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

js 把数据生成word相关推荐

  1. java如何根据模板填充数据生成word文档

    java根据模板填充数据生成word文档 这篇文章干什么? 思路总览 1.准备word模板 2.转换文件格式 3.编写代码 补充--下载流 这篇文章干什么?   使用代码将word模板内容进行替换,并 ...

  2. 微信小程序云开发将数据库数据生成word文件

    演示如何通过云函数把数据存入word模板中,源代码见cloudfunctions/genarateDocument/index.js,整个过程分为以下几个过程:(1) 创建云函数,并安装doctemp ...

  3. 我鼓捣的数据库数据生成word文档的方法!

    <script language="javascript" src="/js/content_top.js" type="text/javasc ...

  4. 数据库数据生成word文档的方法

    从库里取纪录生成word文档. 主要有这么几种方法: 1.改头,就是象excel似的 Response.Buffer = TRUE Response.ContentType = "appli ...

  5. java 将数据生成word文档,并实现打勾选择框

    1.建立word文档模板 2.word模板建立好之后放到指定路径下,这里放到D盘根目录测试 3.{{}}这两个中括号里面的标签就是java中需要注入的变量 4.java代码 public static ...

  6. python批量生成word报告_python自动生成word报告 | 如何将现有的数据利用python 填入word的表格中?...

    关于python连接SQL server数据库的问题? 你把完整的连接代码贴一下 如何将现有的数据利用python 填入word的表格中? VB,VBA我会,py不会哦 DB2教程推荐,新手想学习这个 ...

  7. 使用freemarker生成word文档(包含遍历多条数据、图片)

    在做项目的过程中,有时候需要把数据生成word文档,常用的有POI.ITEXT等,在这篇文章中我们使用freemarker模板来生成我们想要的word文档. 首先我们需要使用office word来编 ...

  8. 使用docx.js生成word

    百家饭OpenAPI v0.7.0准备引入通过Swagger文件自动生成word的功能,因此研究和实现了基于Docx.js(https://docx.js.org/)生成文档的功能,也和大家分享一下使 ...

  9. 若依 springboot 使用freemarker生成word文件,并导出下载

    目录 freemarker生成word文件并导出 一.环境准备 二.编写代码 1.实体类 2.mapper.xml文件 3.mapper.java文件 4.Service.java 5.Service ...

最新文章

  1. Udacity机器人软件工程师课程笔记(五)-样本搜索和找回-基于漫游者号模拟器-自主驾驶
  2. 在Websphere AppServer 5.1中配置数据源
  3. 基于命令序列的异常行为分析 业界研究现状分析
  4. 神经网络的分类行为怎么就不能是一种力的行为?
  5. java el表达式 if else_jsp EL表达式和JSTL标签if-else if-else用法
  6. 解决方案/DIV+CSS 在 IE7/IE6/Firefox间的兼容性问题
  7. C语言有好多7,[c语言]有1到100个数,现在从中提取7、和个位或十位上有7的数、以及7的倍数,然后输出。...
  8. ios开发之多线程---GCD
  9. 局域网ip扫描工具_IP Scanner Pro——ip局域网扫描工具
  10. 思维导图软件哪个好?不要错过这份思维导图软件合集
  11. UVM设置超时退出timeout
  12. python句柄无效_作为Windows服务运行的Python:OSError:[WinError 6]句柄无效
  13. 如何将计算机基础拷到u盘上,怎么把电脑上的CAD拷贝到u盘里
  14. [万字长文] 图神经网络的解释性综述
  15. 10月11号58同城面试的编程题
  16. Docker Daemon
  17. 十分钟玩转3D绘图:WxGL完全手册
  18. 浅谈工资合理避税,五大妙招轻松搞定!
  19. 中级软件设计师2011上半年上午试题
  20. STM32CUBEMX—查表法实现SPWM

热门文章

  1. 英雄杀朱雀之章在线活动
  2. {0}:{1:.4f}“.format(是什么意思 Python字符串格式化 (%占位操作符)
  3. Ubuntu 搜狗输入法安装指南
  4. php中.=是什么意思,javascript中$符号是什么意思?
  5. 国家一级学会创办的期刊
  6. Kubernetes 进阶训练营 Pod基础
  7. 聊聊机器如何“写“好广告文案?
  8. 咸鱼硬件—ZTMS开发板固件安装
  9. matlab ncut谱聚类,NCUT 归一化分割、谱聚类之代码调试问题
  10. 域格 ASR CAT1 系列 模块驱动安装及升级