当前位置: 首页 > 图文教程 > 网络编程 > JSP > 使用jsp实现word、excel格式报表打印

JSP
Hibernate save() saveorupdate()的用法
hibernate更新数据方法小结
jsp 复选框使用方法
JSP单选按钮验证、下拉框验证、复选框验证实现代码
jsp Hibernate批量更新和批量删除处理代码
JSP彩色验证码的实例代码
[J2SE]Java中3DES加密解密调用示例
【算法】扑克发牌算法实现
java易懂易用的MD5加密(可直接运行) (1)
java 易懂易用的MD5加密(可直接运行)(2)
java 截取字符串(判断汉字)
java 中文字符串数组按照音序排列
JAVA 18位身份证号码校验码的算法
jsp JFreeChart使用心得与例子
Hibernate 查询方式总结
java struts常见错误以及原因分析
Java 获取URL的内容
JAVA (Jsp)利用Google的Translate开发API的代码
java SOAPHEADER的web service
JSP与JS交互问题 值传递

JSP 中的 使用jsp实现word、excel格式报表打印


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-03   浏览: 330 ::
收藏到网摘: n/a

title: 使用JSP实现WORD、EXCEL格式报表打印

author: evan

email: [email protected]

date: 2003-08-21


因为ms word和excel的文档都支持html文本格式,因此可以先用word或excel做好模版,另存为Web页,然后将该html改成jsp,将数据部分动态填入即可,不用很辛苦的调整格式
 
word页面只要在jsp头设置如下指令:
<%@page contentType="application/msword;charset=GBK" %>
 
excel如下:
<%@page contentType="application/vnd.ms-excel;charset=GBK" %>

使用这种方式客户端必须安装有office软件,用户访问时将在ie中直接用word或excel打开该页面。

此方法优势是模板设计、调整方便,无需在服务器端使用复杂的POI或jxl技术,也无需在客户端使用ActiveX控件技术,更安全、方便,轻松实现较好的打印效果。 

microsoft关于服务器端动态创建office文档的资料(asp示例): 
http://support.microsoft.com/default.aspx?scid=KB;en-us;301044&
 
简单示例

使用word建立一文档,画表格如下:
----------------------------
| 用户名 | 真实姓名 | 性别 |
----------------------------
| guest  | 路人甲   | 男   |
----------------------------
保存为Web页test.htm, 将test.htm改名为test.jsp,修改其中guest、路人甲、男为从数据库动态查询,如下:

  1. <%@ page contentType="application/msword;charset=GBK" %>
  2. <%@ page import="java.sql.*" %>
  3. <html xmlns:o="urn:schemas-microsoft-com:office:office"
  4. xmlns:w="urn:schemas-microsoft-com:office:word"
  5. xmlns="http://www.w3.org/TR/REC-html40">
  6. <head>
  7. <meta http-equiv=Content-Type content="text/html; charset=GB2312">
  8. <meta name=ProgId content=Word.Document>
  9. <meta name=Generator content="Microsoft Word 9">
  10. <meta name=Originator content="Microsoft Word 9">
  11. <title>用户信息</title>
  12. <!--[if gte mso 9]><xml>
  13.  <o:DocumentProperties>
  14.   <o:Author>evan zhao</o:Author>
  15.   <o:LastAuthor>evan zhao</o:LastAuthor>
  16.   <o:Revision>1</o:Revision>
  17.   <o:TotalTime>1</o:TotalTime>
  18.   <o:Created>2003-08-20T16:26:00Z</o:Created>
  19.   <o:LastSaved>2003-08-20T16:27:00Z</o:LastSaved>
  20.   <o:Pages>1</o:Pages>
  21.   <o:Company>taiping</o:Company>
  22.   <o:Lines>1</o:Lines>
  23.   <o:Paragraphs>1</o:Paragraphs>
  24.   <o:Version>9.2812</o:Version>
  25.  </o:DocumentProperties>
  26. </xml><![endif]--><!--[if gte mso 9]><xml>
  27.  <w:WordDocument>
  28.   <w:PunctuationKerning>
  29.   <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
  30.   <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
  31.   <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
  32.   <w:Compatibility>
  33.    <w:SpaceForUL>
  34.    <w:BalanceSingleByteDoubleByteWidth>
  35.    <w:DoNotLeaveBackslashAlone>
  36.    <w:ULTrailSpace>
  37.    <w:DoNotExpandShiftReturn>
  38.    <w:AdjustLineHeightInTable>
  39.    <w:UseFELayout>
  40.   </w:Compatibility>
  41.  </w:WordDocument>
  42. </xml><![endif]-->
  43. <style>
  44. <!--
  45.  /* Font Definitions */
  46. @font-face
  47.     {font-family:宋体;
  48.     panose-1:2 1 6 0 3 1 1 1 1 1;
  49.     mso-font-alt:SimSun;
  50.     mso-font-charset:134;
  51.     mso-generic-font-family:auto;
  52.     mso-font-pitch:variable;
  53.     mso-font-signature:3 135135232 16 0 262145 0;}
  54. @font-face
  55.     {font-family:"\@宋体";
  56.     panose-1:2 1 6 0 3 1 1 1 1 1;
  57.     mso-font-charset:134;
  58.     mso-generic-font-family:auto;
  59.     mso-font-pitch:variable;
  60.     mso-font-signature:3 135135232 16 0 262145 0;}
  61.  /* Style Definitions */
  62. p.MsoNormal, li.MsoNormal, div.MsoNormal
  63.     {mso-style-parent:"";
  64.     margin:0cm;
  65.     margin-bottom:.0001pt;
  66.     text-align:justify;
  67.     text-justify:inter-ideograph;
  68.     mso-pagination:none;
  69.     font-size:10.5pt;
  70.     mso-bidi-font-size:12.0pt;
  71.     font-family:"Times New Roman";
  72.     mso-fareast-font-family:宋体;
  73.     mso-font-kerning:1.0pt;}
  74.  /* Page Definitions */
  75. @page
  76.     {mso-page-border-surround-header:no;
  77.     mso-page-border-surround-footer:no;}
  78. @page Section1
  79.     {size:595.3pt 841.9pt;
  80.     margin:72.0pt 90.0pt 72.0pt 90.0pt;
  81.     mso-header-margin:42.55pt;
  82.     mso-footer-margin:49.6pt;
  83.     mso-paper-source:0;
  84.     layout-grid:15.6pt;}
  85. div.Section1
  86.     {page:Section1;}
  87. -->
  88. </style>
  89. </head>
  90. <body lang=ZH-CN style='tab-interval:21.0pt;text-justify-trim:punctuation'>
  91. <div class=Section1 style='layout-grid:15.6pt'>
  92. <table border=1 cellspacing=0 cellpadding=0 style='border-collapse:collapse;
  93.  border:none;mso-border-alt:solid windowtext .5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'>
  94.  <tr>
  95.   <td width=189 valign=top style='width:142.0pt;border:solid windowtext .5pt;
  96.   padding:0cm 5.4pt 0cm 5.4pt'>
  97.   <p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";
  98.   mso-hansi-font-family:"Times New Roman"'>用户名</span></p>
  99.   </td>
  100.   <td width=189 valign=top style='width:142.05pt;border:solid windowtext .5pt;
  101.   border-left:none;mso-border-left-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'>
  102.   <p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";
  103.   mso-hansi-font-family:"Times New Roman"'>真实姓名</span></p>
  104.   </td>
  105.   <td width=189 valign=top style='width:142.05pt;border:solid windowtext .5pt;
  106.   border-left:none;mso-border-left-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'>
  107.   <p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";
  108.   mso-hansi-font-family:"Times New Roman"'>性别</span></p>
  109.   </td>
  110.  </tr>
  111. <%
  112. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
  113. String url="jdbc:odbc:mydb";
  114. //连接mydb数据库
  115. Connection con=DriverManager.getConnection (url, """"); 
  116. try{
  117.   Statement stmt=con.createStatement(); 
  118.   //查询employee表
  119.   ResultSet rs=stmt.executeQuery("select user_name, real_name, gender from employee ");
  120.   while(rs.next()){
  121. %>
  122.  <tr>
  123.   <td width=189 valign=top style='width:142.0pt;border:solid windowtext .5pt;
  124.   border-top:none;mso-border-top-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'>
  125.   <p class=MsoNormal><span lang=EN-US><%=rs.getString("user_name")%></span></p>
  126.   </td>
  127.   <td width=189 valign=top style='width:142.05pt;border-top:none;border-left:
  128.   none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  129.   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  130.   padding:0cm 5.4pt 0cm 5.4pt'>
  131.   <p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";
  132.   mso-hansi-font-family:"Times New Roman"'><%=rs.getString("real_name")%></span></p>
  133.   </td>
  134.   <td width=189 valign=top style='width:142.05pt;border-top:none;border-left:
  135.   none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt;
  136.   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
  137.   padding:0cm 5.4pt 0cm 5.4pt'>
  138.   <p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman";
  139.   mso-hansi-font-family:"Times New Roman"'><%=rs.getString("gender")%></span></p>
  140.   </td>
  141.  </tr>
  142. <%
  143.   } // end while
  144.   
  145.   rs.close();
  146.   stmt.close();
  147. finally {
  148.   con.close();
  149. }
  150. %> 
  151.  
  152. </table>
  153. <p class=MsoNormal><span lang=EN-US><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>
  154. </div>
  155. </body>
  156. </html>


相关链接:
在良好的J2EE程序中数据库查询可能写在专门的DAO(Data Access Object)中, 如何方便的查询数据并传递列表至JSP页面请参考:
JSP页面查询显示常用模式

本文参考:WEB应用中报表打印的实现