java web项目中,根据wrod模板导入数据,并实现下载

本文档详细介绍了如何在Java Web项目中利用Word模板导入数据并实现下载。首先编辑Word模板以获得所需样式,然后将其另存为HTML。接着,将HTML文件转换为JSP页面,并在顶部添加内容类型声明。通过按钮和Servlet实现页面跳转,当用户点击下载时,Servlet从数据库获取数据并填充到模板中,最后以Word文档形式返回给用户。

 

 

1,编辑word模板,得到想要的样式

2,word另存为,筛选过的网页(*.htm;*.html) 例如:word_model_02.htm

3,改word_model_02.htm后缀为.jsp

4,在jsp文件的最上部加上:<%@ page contentType="application/msword; charset=gb2312" language="java"%> (不加入下载不了)

5,页面中加入按钮,并用servlet实现页面跳转,

<%=request.getContextPath()%>/servlet/DocumentHandleServlet?templateCode=/page/common/template/word/word_model_02.jsp

  注:如果jsf项目可以利用js实现

  form中加入

  <f:verbatim>

<iframe id="togo" name="togo" height="0" frameborder="0" src=""

scrolling="no"></iframe>

</f:verbatim>

js如下

  function downLoadWord(){

window.document.all("togo").src="<%=request.getContextPath()%>/servlet/DocumentHandleServlet?templateCode=/page/common/template/word/word_model.jsp";

return false;

}

6,定义servlet,在web.xml中配置servlet

 <!-- 下载word模板 -->

 <servlet>

   <servlet-name>DocumentHandleServlet</servlet-name>

   <servlet-class>com.nohi.document.servlet.DocumentHandleServlet</servlet-class>

  </servlet>

 

  <servlet-mapping>

   <servlet-name>DocumentHandleServlet</servlet-name>

   <url-pattern>/servlet/DocumentHandleServlet</url-pattern>

  </servlet-mapping>

public class DocumentHandleServlet extends HttpServlet{

private static final long serialVersionUID = 1L;

private Logger log = Logger.getLogger(this.getClass());

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

this.doPost(req, resp);

}

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

log.debug("DocumentHandleServlet ..................");

String templateCode = req.getParameter("templateCode");

log.debug("templateCode: " + templateCode);

//templateCode = "/page/common/template/word/word_model.jsp";

//到数据库中取数。。。vo.getUserList()返回的是一个 User对象列表

UserManagerVO vo = new UserManagerVO();

UserManagerDao dao = (UserManagerDao) FrameServiceFactory.findBean("userManagerDao");

dao.findUserListByHQL(vo);

log.debug("size: " + vo.getUserList().size());

req.setAttribute("fileName", "fileName_nohi");

req.setAttribute("userList",vo.getUserList());

req.setAttribute("text", "abc");

req.setAttribute("date", "2011-04-05");

req.getRequestDispatcher(templateCode).forward(req, resp);

}

}

7,word_model_02.jsp中编辑取数

  在<%@ page contentType="application/msword; charset=gb2312" language="java"%>正文加入

<%@ page import="java.util.*"%>

<%@ page import="com.nohi.usermanager.model.*"%> <%-- 引入所有页面中用到的类 --%>

<%

//文档名称:文档类型_广义业务编号_版本号_模板名称

String fileName = (String) request.getAttribute("fileName");

String text = (String) request.getAttribute("text");

String date = (String) request.getAttribute("date");

List list = (List) request.getAttribute("userList");

fileName = new String(fileName.getBytes("GBK"), "ISO8859_1");

response.setHeader("Content-Disposition", "attachment; filename="+ fileName + ".doc");

%>

<p class=MsoNormal style='margin-left: 147.0pt; text-indent: 26.25pt'>

<b><span style='font-family: 宋体'>文本:</span>

<span lang=EN-US>

<%=text%>      <%-- 取数 --%>

</span>

</b>

<b><span style='font-family: 宋体'>日期:</span>

  <span lang=EN-US>

<%=date%>   <%-- 取数 --%>

  </span>

</b>

</p>

<%-- 取数:循环列表取数 --%>

<% 

for (Iterator it = list.iterator();it.hasNext();) {

User user = (User)it.next();

%>

<tr>

<td width=189 valign=top

style='width: 142.0pt; border: solid black 1.0pt; border-top: none; padding: 0cm 5.4pt 0cm 5.4pt'>

<p class=MsoNormal>

<b><span lang=EN-US><%=user.getUserId() %></span>

</b>

</p>

</td>

<td width=189 valign=top

style='width: 142.05pt; border-top: none; border-left: none; border-bottom: solid black 1.0pt; border-right: solid black 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt'>

<p class=MsoNormal>

<b><span lang=EN-US><%=user.getUsername() %></span>

</b>

</p>

</td>

<td width=189 valign=top

style='width: 142.05pt; border-top: none; border-left: none; border-bottom: solid black 1.0pt; border-right: solid black 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt'>

<p class=MsoNormal>

<b><span lang=EN-US><%=user.getPassword() %></span>

</b>

</p>

</td>

</tr>

<%

}

%> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值