`

Struts2利用stream直接输出Excel

阅读更多

在利用网页展示查询结果,经常会遇到要求导出成Excel的需求。采用这种方法可以定制输出的格式和内容(还不支持合并单元格和公式),生成真正的Excel格式(不是csv)的Excel。
一、struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
  
<struts>

    <constant name="struts.i18n.encoding" value="UTF-8"/>

    <package name="demo" extends="struts-default">
        <action name="excel" method="execute" class="demo.ExcelAction">
                <result name="excel" type="stream">
                    <param name="contentType">application/vnd.ms-excel</param>    <!-- 注意这里的ContentType -->
                    <param name="inputName">excelStream</param>                   <!-- 这里需要和Action里的变量名一致 -->
                    <param name="contentDisposition">filename="standard.xls"</param>
                    <param name="bufferSize">1024</param>
                </result>
        </action>
    </package>
</struts>

二、Struts2的 Action

package demo;
public class ExcelAction {
    private InputStream excelStream; // 需要生成getter和setter

    public String execute() throws Exception {
        StringBuffer excelBuf = new StringBuffer();
        excelBuf.append("BookName").append("\t").append("Year").append("\t").append("author").append("\n");
        excelBuf.append("Thinking in Java").append("\t").append("2001").append("\t").append("Eckel").append("\n");
        excelBuf.append("Spring in action").append("\t").append("2005").append("\t").append("Rod").append("\n");
        String excelString = excelBuf.toString();
        logger.debug("result excel String: " + excelString);
        excelStream = new ByteArrayInputStream(excelString.getBytes(), 0, excelString.length());
        return "excel";
    }

    // getter and setter
    ...
}

三、Jsp页面

<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <s:head />
 </head>

 <body>

    <s:form action="" method="post">
       <s:submit key="button.submit"/>
    </s:form>
 </body>
</html>

分享到:
评论
2 楼 javabay 2009-04-26  
这种导出方式怎么设置单元格的样式啊?
请问可以使用POI导出吗,其struts.xml该如何配置?
谢谢。
1 楼 zgk83200 2008-12-18  
我导出的 excel 是这个!
指纹号 编号 机器号 日志时间 下载时间 姓名
1 1 1 00:00.0 00:00.0 张卫健
1 1 1 00:00.0 00:00.0 张卫健
1 1 1 00:00.0 00:00.0 张卫健
1 1 1 00:00.0 00:00.0 张卫健
2 2 2 00:00.0 00:00.0 张三
2 2 2 00:00.0 00:00.0 张三
2 2 2 00:00.0 00:00.0 张三
2 2 2 00:00.0 00:00.0 张三
3 3 3 00:00.0 00:00.0 李四
3 3 3 00:00.0 00:00.0 李四
3 3 3 00:00.0 00:00.0 李四
3 3 3 00:00.0 00:00.0 李四
4 4 4 00:00.0 00:00.0 杨奎
4 4 4 00:00.0 00:00.0 杨奎
4 4 4 00:00.0 00:00.0 杨奎
4 4 4 00:00.0 00:00.0 杨奎
5 5 5 00:00.0 00:00.0 王二
5 5 5 00:00.0 00:00.0 王二
5 5 5 00:00.0 2008-12-14 00:00


控制台打印出来的是:
指纹号 编号 机器号 日志时间 下载时间 姓名
1 1 1 2008-12-16 00:00:00.0 2008-12-15 00:00:00.0 张卫健
1 1 1 2008-12-16 00:00:00.0 2008-12-15 00:00:00.0 张卫健
1 1 1 2008-12-16 00:00:00.0 2008-12-15 00:00:00.0 张卫健
1 1 1 2008-12-16 00:00:00.0 2008-12-15 00:00:00.0 张卫健
2 2 2 2008-12-16 00:00:00.0 2008-12-15 00:00:00.0 张三
2 2 2 2008-12-16 00:00:00.0 2008-12-15 00:00:00.0 张三
2 2 2 2008-12-16 00:00:00.0 2008-12-15 00:00:00.0 张三
2 2 2 2008-12-16 00:00:00.0 2008-12-15 00:00:00.0 张三
3 3 3 2008-12-16 00:00:00.0 2008-12-14 00:00:00.0 李四
3 3 3 2008-12-16 00:00:00.0 2008-12-14 00:00:00.0 李四
3 3 3 2008-12-16 00:00:00.0 2008-12-14 00:00:00.0 李四
3 3 3 2008-12-16 00:00:00.0 2008-12-14 00:00:00.0 李四
4 4 4 2008-12-14 00:00:00.0 2008-12-14 00:00:00.0 杨奎
4 4 4 2008-12-14 00:00:00.0 2008-12-14 00:00:00.0 杨奎
4 4 4 2008-12-14 00:00:00.0 2008-12-14 00:00:00.0 杨奎
4 4 4 2008-12-14 00:00:00.0 2008-12-14 00:00:00.0 杨奎
5 5 5 2008-12-14 00:00:00.0 2008-12-14 00:00:00.0 王二
5 5 5 2008-12-14 00:00:00.0 2008-12-14 00:00:00.0 王二
5 5 5 2008-12-14 00:00:00.0 2008-12-14 00:00:00.0 王二
5 5 5 2008-12-14 00:00:00.0 2008-12-14 00:00:00.0 王二

为什么时间显示不出来啊  最后一行的人民也没显示出来也~

相关推荐

    struts2中利用poi导出excel

    本篇文章将深入探讨如何在Struts2框架中使用POI库来导出Excel文件。 首先,我们需要在项目中引入Apache POI库。可以通过Maven或Gradle将其添加到构建文件中。对于Maven,可以在pom.xml文件中添加以下依赖: ```xml...

    struts2+poi实现导出Excel文件

    Struts2 和 Apache POI 的结合使用...通过以上步骤,可以成功利用 Struts2 和 Apache POI 实现 Web 应用程序中的 Excel 导出功能。这个功能广泛应用于数据分析、报表生成、数据交换等多种场景,极大地提高了工作效率。

    struts2利用jasperreport导出excel

    6. **Struts2配置**:在Struts2的配置文件(struts.xml)中,定义一个导出Excel的Action,返回类型设置为流类型(通常为“stream”),并将生成的Excel内容设置到HttpServletResponse的输出流中。 7. **Action实现*...

    struts2实现excel导出

    以下将详细介绍如何利用Struts2和POI实现Excel导出。 首先,你需要在项目中引入Apache POI库。在上述描述中提到的版本是`poi-bin-3.2-FINAL-20081019.zip`,但请确保使用当前的稳定版本,因为随着时间的推移,POI会...

    整合struts2 ssh导出excel

    首先,导出Excel是Web应用中常见的需求,通常用于报表生成或数据批量下载。在Struts2中,我们可以利用Apache POI库来操作Microsoft Office的XML格式,进而创建Excel文件。 1. **Apache POI库的使用**:Apache POI是...

    在struts中利用poi组件导出excel

    在Java Web开发中,Struts框架是...综上所述,在Struts框架中利用Apache POI组件导出Excel,不仅能够实现数据的灵活展示,还可以提高Web应用的用户体验。通过熟练掌握这些技术,开发者可以轻松地处理各种数据导出场景。

    struts2+jxl导出excel

    在"struts2+jxl导出excel"的场景中,我们将讨论如何利用Struts2框架与JXL库配合,实现从web应用中导出数据到Excel的工作。 首先,我们需要理解Struts2的动作(Action)和结果(Result)。动作是处理用户请求的核心...

    struts2+poi实现导出Excel文件.docx

    总结来说,"struts2+poi实现导出Excel文件.docx"的实现方式是利用Struts2的Action和结果类型配置,结合Apache POI库生成Excel文件,并通过HTTP响应返回给客户端,实现数据的导出功能。这一过程涉及了MVC模式、HTTP...

    struts2+poi实现导出Excel文件.pdf

    在Struts2框架中,导出Excel功能主要通过一个Action类实现。Action类是Struts2的核心组件,负责处理用户的请求并执行相应的业务逻辑。在本例中,创建了一个名为`panyu.flow.web.action.ExcelAction`的Action类,这个...

    struts2导出excel.rar

    本压缩包"struts2导出excel.rar"提供了关于如何在Struts2框架中实现Excel导出功能的相关资源。 1. **Struts2框架基础** Struts2是一个基于MVC(Model-View-Controller)设计模式的Java框架,它简化了MVC的实现,...

    struts2+poi实现excel文件的导出

    6. 最后,在 Action 方法返回 "success",Struts2 将使用配置的 `stream` 结果来处理这个字节流,从而完成 Excel 文件的导出。 这个过程不仅限于简单的数据导出,你还可以根据需求实现更复杂的功能,如合并单元格、...

    struts2导出Excel poi

    在Struts2中,Action可以通过Result返回不同的视图,比如JSP、XML或流文件,这正是我们导出Excel所需的。 接下来,我们引入Apache POI。POI提供了读写Microsoft Office文件的API,对于Excel,主要使用HSSFWorkbook...

    [转]java struts2+jxl生成并导出Excel

    利用Struts2的Result类型,例如stream,你可以将生成的Excel流直接发送到浏览器。 以下是一个简单的示例: ```java public class ExportExcelAction extends ActionSupport { public InputStream execute() ...

    POI + Struts2 实现Excel导出工具包

    4. **配置Struts2 Action**:创建一个Struts2 Action类,声明一个方法用于导出Excel,该方法的返回类型应配置为一个特定的Result类型,如stream或者excel,这会使得Struts2将结果流直接发送到浏览器。 5. **设置...

    Struts2+JXL 下载 Excel 文档

    在"Struts2+JXL 下载 Excel 文档"的场景中,开发者通常会创建一个Action,这个Action负责生成Excel文档并提供下载。用户通过浏览器访问特定URL,Struts2框架接收到请求后,会路由到相应的Action。Action内部会利用...

    Struts2+IText动态导出Word示例源码

    本示例主要展示了如何在Struts2框架下利用IText库动态导出Word文档。IText是一个开源Java库,它允许程序员在服务器端生成PDF、HTML、XML以及Word文档。在处理大量或复杂的数据时,动态导出Word文档非常有用,例如...

    Struts2中POI在内存中生成Excel文件并下载

    在Struts2中,我们可能会遇到需要导出数据到Excel的情况,这时可以使用Apache POI库来实现。Apache POI是Java API,专门用于读写Microsoft Office格式的文件,包括Excel。下面将详细介绍如何在Struts2中利用POI在...

    poi导出Excel

    2. **Struts 配置**:在 Struts 的配置文件(如 `struts.xml`)中,你需要定义一个与请求匹配的 Action,设置返回类型为 `stream`,以便能够返回二进制流,即 Excel 文件。例如: ```xml &lt;result type="stream...

    Struts2与jasperReport简单示例

    7. **优化与扩展**:为了提高性能,可以考虑缓存已编译的报表模板,或者利用Struts2的拦截器进行权限控制、日志记录等操作。 总的来说,Struts2和JasperReport的结合使得Java Web应用能够方便地生成和展示动态报表...

Global site tag (gtag.js) - Google Analytics