`

jsp打印,导出word/excel

阅读更多
转自:  http://newyaner.blog.sohu.com/84170098.html

因为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


方法二


1. 在Word或Excel中制作报表的样式。

        Excel的行高和列宽单位无法用mm或cm表示。

        需要计算。在1024*768下,1CM约为38像素。

        以此为基准,可计算并控制报表的行列位置。


2. 在Word中设置“表格——标题行重复”。

    在Excel中设置“文件——页面设置——工作表——打印标题”。


3. 另存为网页,改后缀名“htm”为“jsp”。


4. Word报表文件头为:

           <%@page contentType="application/msword;charset=GBK" language="java"%>

     Excel报表文件头为:

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


5. 在文件头部分定义打印参数变量如下(以Excel为例):

<%  

   //需要打印的记录条数
   int PrintRowCount=RowCount;  

   //每页打印的记录条数
   int PageRowCount=16;           

   //最后一页需要打印的空行的数目
   int LoopNum=PageRowCount-PrintRowCount%PageRowCount;

   //打印区域的高度,其中2的意思是每页需要重复的标题行的数目
   int PrintAreaHeight=(PrintRowCount%PageRowCount==0)?PrintRowCount+2:PrintRowCount+LoopNum+2;

%>


6. 在<style></style>后,改动<!--[if gte mso 9]与<![endif]-->标签中的XML标签内容,主要是设置动态打印区域(以Excel为例):

    <%

     out.print(" ......
        "<x:ExcelName>"+
        "<x:Name>Print_Area</x:Name>"+
        "<x:SheetIndex>1</x:SheetIndex>"+
        "<x:Formula>=Sheet1!$A$1:$G$"+PrintAreaHeight+"</x:Formula>"+
        "</x:ExcelName>"+
         ...... ");

     %>


7. JSP其他编码。

下面是主体循环打印部分(以Excel为例):

<% 
      for (int i=1;i<=PrintRowCount; i++)
       {
              out.print("<tr>"<td>"+i+"</td></tr>"); //有内容
       }
 
      if (LoopNum!=PageRowCount)  //有空行则打印空行补齐最末一页
          for (int j=1;j<=LoopNum; j++)
            {
                   out.print("<tr><td> </td></tr>");//无内容
            }
%>


8. 测试并继续修改


1. 在Word或Excel中制作报表的样式。

        Excel的行高和列宽单位无法用mm或cm表示。

        需要计算。在1024*768下,1CM约为38像素。

        以此为基准,可计算并控制报表的行列位置。


2. 在Word中设置“表格——标题行重复”。

    在Excel中设置“文件——页面设置——工作表——打印标题”。


3. 另存为网页,改后缀名“htm”为“jsp”。


4. Word报表文件头为:

           <%@page contentType="application/msword;charset=GBK" language="java"%>

     Excel报表文件头为:

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


5. 在文件头部分定义打印参数变量如下(以Excel为例):

<%  

   //需要打印的记录条数
   int PrintRowCount=RowCount;  

   //每页打印的记录条数
   int PageRowCount=16;           

   //最后一页需要打印的空行的数目
   int LoopNum=PageRowCount-PrintRowCount%PageRowCount;

   //打印区域的高度,其中2的意思是每页需要重复的标题行的数目
   int PrintAreaHeight=(PrintRowCount%PageRowCount==0)?PrintRowCount+2:PrintRowCount+LoopNum+2;

%>


6. 在<style></style>后,改动<!--[if gte mso 9]与<![endif]-->标签中的XML标签内容,主要是设置动态打印区域(以Excel为例):

    <%

     out.print(" ......
        "<x:ExcelName>"+
        "<x:Name>Print_Area</x:Name>"+
        "<x:SheetIndex>1</x:SheetIndex>"+
        "<x:Formula>=Sheet1!$A$1:$G$"+PrintAreaHeight+"</x:Formula>"+
        "</x:ExcelName>"+
         ...... ");

     %>


7. JSP其他编码。

下面是主体循环打印部分(以Excel为例):

<% 
      for (int i=1;i<=PrintRowCount; i++)
       {
              out.print("<tr>"<td>"+i+"</td></tr>"); //有内容
       }
 
      if (LoopNum!=PageRowCount)  //有空行则打印空行补齐最末一页
          for (int j=1;j<=LoopNum; j++)
            {
                   out.print("<tr><td> </td></tr>");//无内容
            }
%>


8. 测试并继续修改


1. 在Word或Excel中制作报表的样式。

        Excel的行高和列宽单位无法用mm或cm表示。

        需要计算。在1024*768下,1CM约为38像素。

        以此为基准,可计算并控制报表的行列位置。


2. 在Word中设置“表格——标题行重复”。

    在Excel中设置“文件——页面设置——工作表——打印标题”。


3. 另存为网页,改后缀名“htm”为“jsp”。


4. Word报表文件头为:

           <%@page contentType="application/msword;charset=GBK" language="java"%>

     Excel报表文件头为:

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


5. 在文件头部分定义打印参数变量如下(以Excel为例):

<%  

   //需要打印的记录条数
   int PrintRowCount=RowCount;  

   //每页打印的记录条数
   int PageRowCount=16;           

   //最后一页需要打印的空行的数目
   int LoopNum=PageRowCount-PrintRowCount%PageRowCount;

   //打印区域的高度,其中2的意思是每页需要重复的标题行的数目
   int PrintAreaHeight=(PrintRowCount%PageRowCount==0)?PrintRowCount+2:PrintRowCount+LoopNum+2;

%>


6. 在<style></style>后,改动<!--[if gte mso 9]与<![endif]-->标签中的XML标签内容,主要是设置动态打印区域(以Excel为例):

    <%

     out.print(" ......
        "<x:ExcelName>"+
        "<x:Name>Print_Area</x:Name>"+
        "<x:SheetIndex>1</x:SheetIndex>"+
        "<x:Formula>=Sheet1!$A$1:$G$"+PrintAreaHeight+"</x:Formula>"+
        "</x:ExcelName>"+
         ...... ");

     %>


7. JSP其他编码。

下面是主体循环打印部分(以Excel为例):

<% 
      for (int i=1;i<=PrintRowCount; i++)
       {
              out.print("<tr>"<td>"+i+"</td></tr>"); //有内容
       }
 
      if (LoopNum!=PageRowCount)  //有空行则打印空行补齐最末一页
          for (int j=1;j<=LoopNum; j++)
            {
                   out.print("<tr><td> </td></tr>");//无内容
            }
%>


8. 测试并继续修改


三、

<object classid="clsid:0002E510-0000-0000-C000-000000000046" id="Sdivadsheet1"
style="HEIGHT: 100%; WIDTH: 100%" width="14" height="14">
  <param name="HTMLURL" value="<%=strURL%>">
  <param name="HTMLData"  value="">
  <param name="DataType" value="HTMLURL">
  <param name="AutoFit" value="0">
  <param name="DisplayColHeaders" value="0">
  <param name="DisplayGridlines" value="0">
  <param name="DisplayHorizontalScrollBar" value="-1">
  <param name="DisplayRowHeaders" value="0">
  <param name="DisplayTitleBar" value="0">
  <param name="DisplayToolbar" value="-1">
  <param name="DisplayVerticalScrollBar" value="-1">
  <param name="EnableAutoCalculate" value="-1">
  <param name="EnableEvents" value="0">
  <param name="MoveAfterReturn" value="0">
  <param name="MoveAfterReturnDirection" value="0">
  <param name="RightToLeft" value="0">
  <param name="ViewableRange" value="1:100">
</object>
分享到:
评论
2 楼 思考者 2012-01-16  
不错,学习了
1 楼 moon_vv 2008-11-20  
这样打印的话是不是必须要有office插件呀,我以前电脑有问题好像就没打印出来。结果还是用我原先博客中说的方法打印的,比这个复杂但是效果还行,以前也看到过别人开发过相关的组件,不过没什么说明文档用起来很费劲,还是直接用最为根本的方式比较靠谱!呵呵,还有你可以看看咱们javaeye里有人写的ajax框架好像就有导出打印的,叫什么忘了

相关推荐

    jsp导出Excel;简单实用!导出Excel;导出Word

    jsp导出Excel;简单实用!导出Excel;导出Word jsp导出Excel;简单实用!导出Excel;导出Word jsp导出Excel;简单实用!导出Excel;导出Word

    解决JSP 调用 JS 导出WORD 与EXCEL

    根据自己在实际的开发中总结的体会,希望帮助你解决导出WROID 或者EXCEL的问题,

    jsp页面中显示word/excel格式的文档的方法

    word页面只要在jsp头... 您可能感兴趣的文章:JSP上传excel及excel插入至数据库的方法JSP导出Excel文件的方法JSP实现从数据库导出数据到Excel下载的方法jsp实现针对excel及word文档的打印方法jsp导出excel并支持分she

    jsp页面数据通过excel导出

    POI例子,里面使用的Jquery ajax拿后台数据,然后导出成Excel文件,也可导出Word,PPT文件。

    SOAOFFICE - 微软 OFFICE 中间件

    SOAOffice除了提供Word/Excel动态数据填充,Word/Excel数据导入导出,Word/Excel/PowerPoint等Office文档的在线打开、编辑、保存,权限控制,只读控制等功能外,还给在线办公内置了强大的支持功能:强制痕迹保留,...

    SpringMVC+jspereport,实现报表分页查看、文件(pdf、excel、word)导出,以及html展示和调用浏览器打印功能实现打印

    SpringMVC+jspereport,实现报表分页查看、文件(pdf、excel、word)导出,以及html展示和调用浏览器打印功能实现打印,报文都是采用ireport5.6.0设计

    jsp导出Excel

    使用JSP操作Excel有三中方法 第一种方法:静态方法生成Word和Excel文档 第二种方法:如何使用POI组件操作Excel 地三种方法:使用JXL组件操作Excel

    poi 资料

    使用POI导入,导出Excel jsp下载文件的实现方法 及 注意 jsp打印,导出word-excel 等

    网上报名系统mysql+JSP实现

    一个网上报名系统,用户注册,提交信息,修改信息,管理员查看信息,删除信息,将报名信息导出为word,excel。mysql+JSP实现

    报表导出组件(导出页面内容)

    本组件可以导出各种格式的前台,可导出多个的内容,并且可以包含导出图片的功能(excel除外),希望对一些人有用,且希望使用的人提出宝贵意见。如有问题可加qq:244926053,email:cck1112@163.com,谢谢

    word导入sql

    如何通过 java 语言 从 jsp 页面上的数据 导入 word 里 如果你的数据形式是以 表格显示的 是可以的 直接把 jsp 中 table 内容导出到 word 或 excel

    freemarker生成复杂word

    如流程审批单,在流程处理完成后将处理过程按照流程单的要求导出,有时程序中需要实现生成标准Word文档,要求能够打印,并且保持页面样式不变,常见的方案有POI、iText、JACOB、JSP几种方式,POI读取Word文档比较...

    网上报名系统jsp+mysql

    本资源是本人根据学院需求开发的一个网上报名系统,采用MVC架构,报名人员可以提交,查看,并修改自己的个人报名信息,管理员可以删除报名者信息,把报名者信息导出为Wold、Excel,本资源中包括数据库文件。...

    Java_Web开发实战1200例第1卷.part2

    第5篇 操作Word、Excel、报表与打印篇 第20章 JSP操作Word 764 20.1 应用JavaScript导出到Word 765 20.2 应用响应流导出到Word 766 20.3 应用POI组件导出到Word 772 第21章 JSP操作Excel 775 21.1 应用JXL组件操作...

    Java_Web开发实战1200例第1卷.part3

    第5篇 操作Word、Excel、报表与打印篇 第20章 JSP操作Word 764 20.1 应用JavaScript导出到Word 765 20.2 应用响应流导出到Word 766 20.3 应用POI组件导出到Word 772 第21章 JSP操作Excel 775 21.1 应用JXL组件操作...

    毕业设计基于SSM/Springboot的商城项目

    增加word和excel模板 ; 已实现 excel导出 和 文件导入 增加redis,存储商品信息主要存储。 增加mq,订单并发,再购物车层次上做到入库并发控制 增加邮件发送,订单支付成功和发货成功给客户和管理员分别发送邮件...

    毕业设计基于SSM/Springboot的商城项目java源码+SQL脚本

    [已实现] 增加word和excel模板 ; excel导出 和 文件导入 增加redis,存储商品信息主要存储。 增加mq,订单并发,再购物车层次上做到入库并发控制 [已实现] 增加邮件发送,订单支付成功和发货成功给客户和管理员...

    毕业设计-基于SSM/Springboot的商城项目

    [已实现] 增加word和excel模板 ; excel导出 和 文件导入 增加redis,存储商品信息主要存储。 增加mq,订单并发,再购物车层次上做到入库并发控制 [已实现] 增加邮件发送,订单支付成功和发货成功给客户和管理员...

Global site tag (gtag.js) - Google Analytics