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

JSP
Servlet及JSP中的多线程同步问题
使用Ant和Tomcat创建Web应用
如何直接在浏览器内运行SQL命令
Servlet、Jsp中的多国语言显示
html与jsp开发分离技术
通过Jsp发送动态图像
Servlets和JSP Pages最佳实践
学习在JSP中使用JavaBeans
JSP显示内容缓存技巧
应用JDOM处理数据库到XML转换的JSP实现
JSP中tomcat的SQL Server2000数据库连接池的配置
用JSTL实现JSP应用程序快速开发
浅谈4种类型的JDBC驱动程序
怎样设置 JSP 的虚拟目录
Java 中对文件的读写操作之比较
javamail在jsp中调用
jsp中任意文字转Unicode的通用模块
JSP与SQL SERVER的留言本
jspSmartUpload上传下载全攻略
Tomcat5.x中的虚拟主机配置方法

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


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