• jsp导出excel


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

    作者:丁丁出处:博客2010-12-21 07:25

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

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

    以下是代码片段: %@page contentType="application/msword;charset=GBK" %
    <%@page contentType="application/msword;charset=GBK" %>
    <%  
       String fileName = "分析.xls";  
         //对中文文件名编码  
      //fileName = URLEncoder.encode(fileName, "utf-8");  
       byte[] bytes = fileName.getBytes("GB2312");  
       String unicoStr = new String(bytes, "ISO-8859-1");
      response.setHeader("Content-disposition", "attachment; filename=" + unicoStr);  
     %>  

      excel如下:

    以下是代码片段: %@page contentType="application/vnd.ms-excel;charset=GBK" %
    <%@page contentType="application/vnd.ms-excel;charset=GBK" %>

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

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

      简单示例:

      使用word建立一文档,画表格如下:

      ----------------------------

      | 用户名 | 真实姓名 | 性别 |

      ----------------------------

      | guest | 路人甲 | 男 |

      ----------------------------

      保存为Web页test.htm, 将test.htm改名为test.jsp,修改其中guest、路人甲、男为从数据库动态查询,如下:

    <%@ page contentType="application/msword;charset=GBK" %> 
    <%@ page import="java.sql.*" %> 
    <html xmlns:o="urn:schemas-microsoft-com:office:office" 
    xmlns:w="urn:schemas-microsoft-com:office:word" 
    xmlns="http://www.w3.org/TR/REC-html40"> 
    
    <head> 
    <meta http-equiv=Content-Type content="text/html; charset=GB2312"> 
    <meta name=ProgId content=Word.Document> 
    <meta name=Generator content="Microsoft Word 9"> 
    <meta name=Originator content="Microsoft Word 9"> 
    <title>用户信息</title> 
    <!--[if gte mso 9]><xml> 
    <o:DocumentProperties> 
    <o:Author>evan zhao</o:Author> 
    <o:LastAuthor>evan zhao</o:LastAuthor> 
    <o:Revision>1</o:Revision> 
    <o:TotalTime>1</o:TotalTime> 
    <o:Created>2003-08-20T16:26:00Z</o:Created> 
    <o:LastSaved>2003-08-20T16:27:00Z</o:LastSaved> 
    <o:Pages>1</o:Pages> 
    <o:Company>taiping</o:Company> 
    <o:Lines>1</o:Lines> 
    <o:Paragraphs>1</o:Paragraphs> 
    <o:Version>9.2812</o:Version> 
    </o:DocumentProperties> 
    </xml><![endif]--><!--[if gte mso 9]><xml> 
    <w:WordDocument> 
    <w:PunctuationKerning> 
    <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> 
    <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> 
    <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> 
    <w:Compatibility> 
    <w:SpaceForUL> 
    <w:BalanceSingleByteDoubleByteWidth> 
    <w:DoNotLeaveBackslashAlone> 
    <w:ULTrailSpace> 
    <w:DoNotExpandShiftReturn> 
    <w:AdjustLineHeightInTable> 
    <w:UseFELayout> 
    </w:Compatibility> 
    </w:WordDocument> 
    </xml><![endif]--> 
    <style> 
    <!-- 
    /* Font Definitions */ 
    @font-face 
    {font-family:宋体; 
    panose-1:2 1 6 0 3 1 1 1 1 1; 
    mso-font-alt:SimSun; 
    mso-font-charset:134; 
    mso-generic-font-family:auto; 
    mso-font-pitch:variable; 
    mso-font-signature:3 135135232 16 0 262145 0;} 
    @font-face 
    {font-family:"\@宋体"; 
    panose-1:2 1 6 0 3 1 1 1 1 1; 
    mso-font-charset:134; 
    mso-generic-font-family:auto; 
    mso-font-pitch:variable; 
    mso-font-signature:3 135135232 16 0 262145 0;} 
    /* Style Definitions */ 
    p.MsoNormal, li.MsoNormal, div.MsoNormal 
    {mso-style-parent:""; 
    margin:0cm; 
    margin-bottom:.0001pt; 
    text-align:justify; 
    text-justify:inter-ideograph; 
    mso-pagination:none; 
    font-size:10.5pt; 
    mso-bidi-font-size:12.0pt; 
    font-family:"Times New Roman"; 
    mso-fareast-font-family:宋体; 
    mso-font-kerning:1.0pt;} 
    /* Page Definitions */ 
    @page 
    {mso-page-border-surround-header:no; 
    mso-page-border-surround-footer:no;} 
    @page Section1 
    {size:595.3pt 841.9pt; 
    margin:72.0pt 90.0pt 72.0pt 90.0pt; 
    mso-header-margin:42.55pt; 
    mso-footer-margin:49.6pt; 
    mso-paper-source:0; 
    layout-grid:15.6pt;} 
    div.Section1 
    {page:Section1;} 
    --> 
    </style> 
    </head> 
    
    <body lang=ZH-CN style='tab-interval:21.0pt;text-justify-trim:punctuation'> 
    
    <div class=Section1 style='layout-grid:15.6pt'> 
    
    
    <table border=1 cellspacing=0 cellpadding=0 style='border-collapse:collapse; 
    border:none;mso-border-alt:solid windowtext .5pt;mso-padding-alt:0cm 5.4pt 0cm 5.4pt'> 
    <tr> 
    <td width=189 valign=top style='142.0pt;border:solid windowtext .5pt; 
    padding:0cm 5.4pt 0cm 5.4pt'> 
    <p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman"; 
    mso-hansi-font-family:"Times New Roman"'>用户名</span></p> 
    </td> 
    <td width=189 valign=top style='142.05pt;border:solid windowtext .5pt; 
    border-left:none;mso-border-left-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'> 
    <p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman"; 
    mso-hansi-font-family:"Times New Roman"'>真实姓名</span></p> 
    </td> 
    <td width=189 valign=top style='142.05pt;border:solid windowtext .5pt; 
    border-left:none;mso-border-left-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'> 
    <p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman"; 
    mso-hansi-font-family:"Times New Roman"'>性别</span></p> 
    </td> 
    </tr> 
    <% 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
    
    String url="jdbc:odbc:mydb"; 
    
    //连接mydb数据库 
    Connection con=DriverManager.getConnection (url, "", ""); 
    
    try{ 
    Statement stmt=con.createStatement(); 
    
    //查询employee表 
    ResultSet rs=stmt.executeQuery("select user_name, real_name, gender from employee "); 
    
    while(rs.next()){ 
    %> 
    
    <tr> 
    <td width=189 valign=top style='142.0pt;border:solid windowtext .5pt; 
    border-top:none;mso-border-top-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'> 
    <p class=MsoNormal><span lang=EN-US><%=rs.getString("user_name")%></span></p> 
    </td> 
    <td width=189 valign=top style='142.05pt;border-top:none;border-left: 
    none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt; 
    mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt; 
    padding:0cm 5.4pt 0cm 5.4pt'> 
    <p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman"; 
    mso-hansi-font-family:"Times New Roman"'><%=rs.getString("real_name")%></span></p> 
    </td> 
    <td width=189 valign=top style='142.05pt;border-top:none;border-left: 
    none;border-bottom:solid windowtext .5pt;border-right:solid windowtext .5pt; 
    mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt; 
    padding:0cm 5.4pt 0cm 5.4pt'> 
    <p class=MsoNormal><span style='font-family:宋体;mso-ascii-font-family:"Times New Roman"; 
    mso-hansi-font-family:"Times New Roman"'><%=rs.getString("gender")%></span></p> 
    </td> 
    </tr> 
    
    <% 
    } // end while 
    
    rs.close(); 
    stmt.close(); 
    } finally { 
    con.close(); 
    } 
    %> 
    
    </table> 
    
    <p class=MsoNormal><span lang=EN-US><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p> 
    
    </div> 
    
    </body> 
    
    </html>
     
  • 相关阅读:
    H3BPM子表的复制
    vue规格新增一对多的例子
    vue自制switch滑块
    table垂直居中
    css清楚浮动的class
    网页之间的参数传递
    调用get_str_time(时间), 就能把毫秒的时间转换成格式化的 ,转化时间戳的方法
    css实现照片上传的加号框
    递归函数获得n个不重复的随机数
    随机生成n个不重复的数,范围是2-32,并让其在新页面打开
  • 原文地址:https://www.cnblogs.com/passer1991/p/3092283.html
Copyright © 2020-2023  润新知