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

JSP
jsp计数器制作
用jsp编写文件上载
基于JSP的动态网站开发技术
JSP由浅入深(3)—— 通过表达式增加动态内容
JSP由浅入深(5)—— Scriptlets和HTML的混合
JSP由浅入深(1)—— 熟悉JSP服务器
JSP由浅入深(12)—— 表单编辑
JSP由浅入深(11)—— 标记库
JSP由浅入深(10)—— Beans and Forms处理
JSP由浅入深(9)—— JSP Sessions
JSP由浅入深(8)—— JSP Tags
JSP由浅入深(6)—— JSP声明
JSP由浅入深(4)—— Scriptlets
JSP由浅入深(2)—— 第一个JSP
JSP由浅入深(7)—— JSP Directives
JSP中的字符替换函数 str_replace() 实现!
把一张图片变形扭曲成各种不同的长宽
用JSP编写通用信息发布程序
Java Servlet及Cookie的使用
Apache+Servlet+Jsp环境设置(上)

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-03   浏览: 316 ::
收藏到网摘: 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应用中报表打印的实现