`

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页面生成word或excel

    ### 使用JSP实现Word、Excel格式报表打印 #### 一、使用JSP生成Word文档 在JSP中生成Word文档可以通过设置正确的`content-type`来实现。具体来说,只需要在JSP页面的头部添加以下指令: ```jsp ...

    解决JSP 调用 JS 导出WORD 与EXCEL

    在导出Word或Excel时,JSP通常用于处理后端数据的获取和处理,而JavaScript则用于生成文件并触发下载。 在实际操作中,我们通常不直接使用JavaScript生成Word或Excel文件,因为这涉及到复杂的数据格式化和文件结构...

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

    总之,JSP导出Excel和Word是常见的功能需求,通过Apache POI库可以轻松实现。正确设置响应头和使用流处理可以确保文件能被正确下载,同时根据实际需求调整数据处理和样式设置,能够创建符合业务需求的导出文件。

    一简单的方法jsp生成导出word

    要实现从JSP导出Word文档,我们可以利用Apache POI库。Apache POI是一个开源项目,提供API用于读写Microsoft Office格式的文件,包括Word(.doc和.docx)、Excel(.xls和.xlsx)等。在JSP中使用POI,我们可以创建一...

    jsp页面数据通过excel导出

    此外,Apache POI不仅仅支持Excel,还可以导出Word和PowerPoint文件。对于Word,可以使用`XWPFDocument`,而对于PowerPoint,则可以使用`XSLFSlideShow`。导出流程与Excel类似,只是使用的类和方法有所不同。 总的...

    JSP中导入导出Excel文件.

    本文将深入探讨如何在JSP环境中实现Excel文件的导入与导出功能,利用Apache POI库作为主要工具。 ### Apache POI简介 Apache POI是一个开源的Java API,用于读写Microsoft Office格式的文件,如Word、Excel等。它...

    报表导出excel word pdf html

    "报表导出excel word pdf html"这个主题涵盖了将数据导出为不同格式的技术,这些格式都是日常工作和交流中常用的文档类型。以下是关于这些格式以及如何在Java环境中实现导出的详细知识: 1. Excel:Microsoft Excel...

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

    4. **JSP实现Excel/Word文档打印方法**: 要实现针对这些文档的打印功能,通常需要借助JavaScript库,如jsPDF或html2canvas,它们可以将HTML内容转换成PDF,然后用户可以打印PDF。对于Word,由于JavaScript无法直接...

    jsp 导出为Word

    在日常工作中,经常需要将网页上的数据导出到其他格式,如Word或Excel等,以便于进一步处理或分享。本文主要介绍如何利用JSP技术将页面中的表格(Table)数据导出为Word文档。 #### 基本原理与实现步骤 要实现这一...

    jsp页面生成word或excel.pdf

    二、使用JSP实现WORD、EXCEL格式报表打印: 在JSP中生成Word文档,关键在于利用Java API,如Apache POI库,它提供了对Microsoft Office格式文件(包括Word和Excel)的读写支持。对于Word,首先要在JSP头部设置相应的...

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

    本项目结合了SpringMVC框架与JasperReport工具,实现了报表的多种功能,包括分页查看、文件导出(PDF、Excel、Word)以及HTML展示和浏览器打印功能。 首先,SpringMVC作为Java Web开发的主流MVC框架,提供了模型-...

    jsp页面生成word或excel.rar

    在教育场景下,教师可能需要从Web应用程序中导出学生的成绩、课程表等信息到Word或Excel文档,方便打印或进一步处理。下面我们将详细探讨如何使用JSP来实现这个功能。 1. **JSP基础** JSP是由Java Servlet技术发展...

    SOAOFFICE - 微软 OFFICE 中间件

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

    JSP导出Excel.docx

    标题中的“JSP导出Excel.docx”表明我们要讨论的主题是使用Java服务器页面(JSP)来生成Excel文件。描述部分未提供具体内容,但我们可以基于标题和标签来深入讲解。 在Java开发中,导出Excel文件是常见的需求,通常...

    java实现Excel导入导出

    Apache POI 是一个开源的 Java 库,用于读取和写入 Microsoft Office 文件格式,包括 Excel、Word 和 PowerPoint 等。POI 库提供了一个完整的解决方案来处理 Microsoft Office 文件,能够读取和写入 Excel 文件中的...

    基于SSM的POI导入导出Excel实战

    Apache POI是Apache软件基金会的一个开源项目,主要用来读写Microsoft Office格式的文件,如Word、Excel和PowerPoint等。在我们的场景中,我们将关注Excel的处理: - **HSSF**:用于处理老版本的Excel文件(.xls)...

    导出网页中的table到excel

    除了将网页中的table数据导出到Excel外,还可以考虑其他格式的导出,例如Word文档。 **示例代码** (将网页内容导出为Word文档): ```jsp &lt;%@ page contentType="application/msword" %&gt; &lt;!-- 设置本网页为Word格式 ...

Global site tag (gtag.js) - Google Analytics