转载

实例说明JSP打印报表的方法

因为ms word和excel的文档都支持html文本格式,因此可以先用word或excel做好模版,另存为Web页,然后将该html改成jsp,将数据部分动态填入即可,不用很辛苦的调整格式即可实现JSP打印报表。

word页面只要在jsp头设置如下指令: 

  1. < %@page contentType="application/msword;charset=GBK" %>  

excel如下:

  1. < %@page contentType="application/vnd.ms-excel;charset=GBK" %>  

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

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

JSP打印报表简单示例:

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

一个JSP打印报表的实例就这样完成了。

正文到此结束
Loading...