`
SavageGarden
  • 浏览: 223232 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JSP+VBScript+Word

    博客分类:
  • VB
阅读更多

真是难以想象,一天的时间,我也整出来了一个 VBScript 的应用,看来微软的这些东西还是有那么点可取之处的,别的不说,就说 word 里录制宏和 word 里带的 Vb 的帮助文档,就省去了不少麻烦。废话不多少,代码说话。

需求为:查询某种类型的记录,然后在表格中显示其部分属性,并按照月份分成几个小表格,打印到 word 中,并将此 word 内容作为另一种记录的一个附件。

写了个测试例子,贴代码

首先是个 Bean

 

package com.test;

public class Bean {

       public String title;
       public String date;
       public String status;

       public Bean(String title,String date,String status){

              this.title = title;
              this.date = date;
              this.status = status;

       }

       public String getDate() {
              return date;
       }

       public void setDate(String date) {
              this.date = date;
       }

       public String getStatus() {
              return status;
       }

       public void setStatus(String status) {
              this.status = status;
       }

       public String getTitle() {
              return title;
       }

       public void setTitle(String title) {
              this.title = title;
       }

}
 

 

JSP中按照月份分组部分

 

Bean bean1 = new Bean("测试一","2007-11-12","已办理");
Bean bean2 = new Bean("测试二","2007-12-12","已办理");
Bean bean3 = new Bean("测试三","2008-10-12","已办理");
Bean bean4 = new Bean("测试四","2008-11-12","已办理");
Bean bean5 = new Bean("测试五","2007-11-20","已办理");
Bean bean6 = new Bean("测试六","2008-11-12","已办理");

ArrayList list = new ArrayList();
list.add(bean1);
list.add(bean2);
list.add(bean3);
list.add(bean4);
list.add(bean5);
list.add(bean6);

String[] yearAndMonth = new String[48];//4*12=48,存储某年某月
for(int i = 0;i < yearAndMonth.length;i ++){//数组初始化
	yearAndMonth[i] = "";
}
HashMap hp = new HashMap();//存放某年某月的记录列表
int index = 0;//数组的索引
for(int i = 0;i < list.size();i ++){
	Bean bean = (Bean)list.get(i);
	String beginTime = bean.getDate();
	boolean needAdd = true;//标记是否需要添加
	for(int j = 0;j < index;j ++){
		if(beginTime.substring(0,7).equals(yearAndMonth[j])){//如果某年某月已经有记录
			needAdd = false;//不需要添加
			break;
		}
	}
	if(needAdd){//需要添加
		yearAndMonth[index] = beginTime.substring(0,7);//改写数组对应索引处的值
		//新建List保存记录并存储到Map
		ArrayList listByTime = new ArrayList();
		listByTime.add(bean);
		hp.put(beginTime.substring(0,7),listByTime);
		index ++;
	}else{//不需要添加
		//从Map中得到对应的List,并在此添加记录
		((ArrayList)hp.get(beginTime.substring(0,7))).add(bean);	
	}
}
for(int j = 0;j < index;j ++){
	out.print(yearAndMonth[j]);
	out.println("<br>");
	if(hp.get(yearAndMonth[j])!=null){
		ArrayList a = (ArrayList)hp.get(yearAndMonth[j]);
		out.print("有"+a.size()+"个:");
		for(int x = 0;x < a.size();x ++){
			Bean bean = (Bean)a.get(x);
			out.print(bean.getDate()+"   ");
		}
		out.println("<br>");
	}
}

 然后是写入到制定位置的word文件中

<script language="vbscript">
	function writeListToWord()
		Set fso = CreateObject("Scripting.FileSystemObject")
		Set MyFile = fso.GetFile("E://test.doc")
		MyFile.Copy ("E://test1.doc")
		
	  Set myDocApp = CreateObject("Word.Application")
	  myDocApp.Visible = True
	  myDocApp.Activate
	  set myDoc = myDocApp.Documents.Open("E://test1.doc")
	  'Set myDoc = myDocApp.Documents.Add()
	  
	  Set objSelection = myDocApp.Selection
		
		<%
		for(int j = 0;j < index;j ++){
			if(hp.get(yearAndMonth[j])!=null){
				ArrayList a = (ArrayList)hp.get(yearAndMonth[j]);
				%>
				Set table1 = objSelection.Tables.Add(objSelection.Range, <%=a.size()+1%>, 3)
				Set Table1 = myDoc.Tables(<%=j+1%>)
				Table1.Cell(1,1).Range.Text = "标题"
				Table1.Cell(1,2).Range.Text = "发布时间"
				Table1.Cell(1,3).Range.Text = "状态"
				<%
				for(int x = 0;x < a.size();x ++){
					Bean bean = (Bean)a.get(x);
					%>
					Table1.Cell(<%=x+2%>,1).Range.Text = "<%=bean.getTitle()%>"
					Table1.Cell(<%=x+2%>,2).Range.Text = "<%=bean.getDate()%>"
					Table1.Cell(<%=x+2%>,3).Range.Text = "<%=bean.getStatus()%>"
					<%
				}
				%>
				for i = 1 To Table1.Rows.Count
					objSelection.MoveDown
				next
				
				objSelection.TypeText "新的循环开始"&vbCrLf
				<%
			}
		}
		%>
	  myDoc.close()
	  myDocApp.quit()
	  
	  Set MyFile = fso.GetFile("E://test1.doc")
	  MyFile.Copy ("E://test.doc")
	  MyFile.delete()
	end function
</script>

 OK,代码就是这些了,但是测试的话要加入受信站点,既允许读写本地文件

 

          

 

分享到:
评论

相关推荐

    JAVA班主任管理系统毕业论文(源代码+word论文).zip

    JAVA班主任管理系统毕业论文(源代码+word论文) 课题背景 随着现在教育事业的不断发展,信息技术对社会进步和国名经济发挥着越来越大的促进作用,并对传统的思想观念、工作方式产生巨大的冲击。世界已进入信息化时代...

    (word完整版)JSP纸制教案(1).doc

    2. **编程语言**:JSP使用Java,而ASP则使用JavaScript或VBScript。 3. **Web服务器支持**:JSP兼容多种Web服务器,如Apache、Resin、Tomcat和IIS,而ASP主要限于Microsoft IIS或Personal WebServer。 4. **操作...

    FCK导入WORD项目

    支持脚本:JavaScript,VBScript 支持服务器:Windows NT,Windows 2003,Windows XP,Windows Vista,Windows 7,Linux 支持编辑器:CKEditor3.x,FCKeditor2.x,NicEdit,TinyMCE,jwysiwyg,Xinha,Openwysiwyg,Free Rich ...

    webword

    通过集成WebWord,开发者可以轻松地在ASP、ASP.NET或JSP等Web应用程序中实现对Microsoft Word文档的全面操作,无需用户在本地安装Word软件。 在描述中提到,WebWord控件不仅支持文档操作,还能与各种通用数据库进行...

    asp入门笔记,Word文档

    1. 语言选择:ASP主要使用VBScript和JavaScript,而PHP和JSP则分别使用PHP和Java语言,Java通常被认为更强大,但PHP和JavaScript更易学。 2. 执行机制:ASP脚本在服务器端执行,而PHP可以同时在服务器端和客户端执行...

    weboffice.zip_Jsp/Servlet_Java_

    4. **ActiveX嵌入**:在JSP中嵌入ActiveX控件,通常需要JavaScript或VBScript来调用控件的方法和属性。这可能涉及到跨域安全设置和用户权限管理。 5. **Java与ActiveX交互**:由于Java不直接支持ActiveX,开发者...

    2021-2022计算机二级等级考试试题及答案No.9258.docx

    19. Word段落标记:段落标记在打印时不被打印出来。 20. Visual FoxPro删除记录:SQL的DELETE命令可以直接删除记录,无需先用USE命令打开表,而传统的Visual FoxPro DELETE命令则需要先打开表。 以上是根据题目...

    2021-2022计算机二级等级考试试题及答案No.13365.docx

    这些知识点涵盖了Java编程、数据库管理、SQL语法、C语言特性、Web开发、操作系统原理、VBScript、音频文件格式、网络域名、数据库设计原则、Word操作、PowerPoint动画、数组操作、字符串处理、浏览器功能以及逻辑...

    2021-2022计算机二级等级考试试题及答案No.3410.docx

    16. JSP页面间传递数据:在b.jsp中,使用`&lt;jsp:include page="a.jsp" flush="true"&gt;&lt;jsp:param name="loginName" value="${loginName}" /&gt;&lt;/jsp:include&gt;`或`&lt;jsp:forward page="a.jsp"&gt;&lt;jsp:param name="loginName...

    客户端下载已知文件类型.text

    例如,`.doc`文件应设置为`application/msword`,而二进制文件则通常设置为`application/octet-stream`。 2. **设置Content-Disposition**:这个响应头用于指定下载行为,其值通常为`attachment`,后跟一个`filename...

    2021-2022计算机二级等级考试试题及答案No.4737.docx

    11. JSP 引入JavaBean:在JSP中,使用`&lt;jsp:useBean&gt;`标签来引入JavaBean,正确的方式是`&lt;jsp:useBean id="beanName" class="fully.qualified.className" scope="scope"&gt;`。 12. Word2003 主题设置:在Word中,可以...

    2021-2022计算机二级等级考试试题及答案No.298.docx

    21. JSP页面间传递数据:使用`request.getAttribute()`和`response.sendRedirect()`可以在JSP页面间传递数据。 22. E-R图到关系模型转换:属于数据库设计的逻辑设计阶段。 23. 多任务系统中的进程:每个独立执行的...

    2021-2022计算机二级等级考试试题及答案No.16424.docx

    这些题目涵盖了计算机基础知识的多个方面,包括网页设计(CSS)、数据库管理(Visual FoxPro)、编程(JavaScript、VBScript)、Web开发(JSP)、文本编辑(Word2000)、数据库设计(Access)、数据库管理系统...

    2021-2022计算机二级等级考试试题及答案No.4338.docx

    以上就是针对计算机二级等级考试题库中涉及的知识点的详细解析,涵盖了编程语言(如Java、VBScript)、数据库操作(MySQL)、办公软件(Word、PowerPoint)、网络协议、Web开发(JSP、Servlet)、操作系统(Windows...

    2021-2022计算机二级等级考试试题及答案No.5253.docx

    1. JSP标准动作:在JSP中,`&lt;jsp:useBean&gt;`可以用来创建和初始化bean,如果对象不存在,它会在请求作用域中创建一个新的bean实例。 2. MySQL权限管理:在MySQL中,`CREATE USER`权限只能由具有`CREATE USER`或`...

    2021-2022计算机二级等级考试试题及答案No.17649.docx

    主要包括编程语言基础(如VBScript)、文件操作、HTML标记、数据库概念、软件工程、操作系统、面向对象编程、事件处理、网络通信、编程语法以及办公软件应用(如Word和PowerPoint)。下面将对这些知识点进行详细解释...

    2021-2022计算机二级等级考试试题及答案No.3893.docx

    3. Word快捷键:Ctrl+Home是Word中的快捷键,用于将光标快速移动到文档的开头。 4. 字段大小属性:在数据库管理中,字段大小属性用于限制输入数据的长度,OLE(Object Linking and Embedding)是微软的一种技术,...

    NTKO文档在线编辑控件4.0.1.2

    26 支持简洁高效的编程接口 支持二次开发,可使用Javascript和VBScript对控件进行编程。可以完全控制Office文档。 27 支持HTTP协议,HTTPS OVER SSL协议 对HTTPS协议的支持使得可以创建更加安全的应用。并且自动...

    2021-2022计算机二级等级考试试题及答案No.14952.docx

    28. 动态网页语言:常见的动态网页编程语言有PHP、ASP.NET、JSP、Python等。 这些知识点涵盖了计算机二级等级考试中常见的内容,包括编程语法、数据库操作、网页开发、操作系统特性、数据结构以及办公软件应用等...

Global site tag (gtag.js) - Google Analytics