`

【转】struts2中POI在内存中生成文件并下载

    博客分类:
  • poi
阅读更多
<%@ page contentType="text/html; charset=gbk" %>
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
<a href="excel.action">下载文件</a>
</html>


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>

    <package name="default" extends="struts-default">
        <action name="excel" class="ExcelDownloadAction">
            <result name="success" type="stream">
                <param name="contentType">application/vnd.ms-excel</param>
                <param name="contentDisposition">attachment;filename="AllUsers.xls"</param>
                <param name="inputName">excelFile</param>
            </result>
        </action>
    </package>
</struts>


import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class ExcelDownloadAction extends ActionSupport {

    public InputStream getExcelFile() {
        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet("sheet1");
        {
            // 创建表头
            HSSFRow row = sheet.createRow(0);
            HSSFCell cell = row.createCell((short) 0);
            cell.setCellValue("id");
            cell = row.createCell((short) 1);
            cell.setEncoding(HSSFWorkbook.ENCODING_UTF_16);
            cell.setCellValue("姓");
            cell = row.createCell((short) 2);
            cell.setEncoding(HSSFWorkbook.ENCODING_UTF_16);
            cell.setCellValue("名");
            cell = row.createCell((short) 3);
            cell.setEncoding(HSSFWorkbook.ENCODING_UTF_16);
            cell.setCellValue("年龄");

            // 创建数据
            // 第一行
            row = sheet.createRow(1);
            cell = row.createCell((short) 0);
            cell.setCellValue("1");
            cell = row.createCell((short) 1);
            cell.setEncoding(HSSFWorkbook.ENCODING_UTF_16);
            cell.setCellValue("张");
            cell = row.createCell((short) 2);
            cell.setEncoding(HSSFWorkbook.ENCODING_UTF_16);
            cell.setCellValue("四");
            cell = row.createCell((short) 3);
            cell.setCellValue("23");

            // 第二行
            row = sheet.createRow(2);
            cell = row.createCell((short) 0);
            cell.setCellValue("2");
            cell = row.createCell((short) 1);
            cell.setEncoding(HSSFWorkbook.ENCODING_UTF_16);
            cell.setCellValue("李");
            cell = row.createCell((short) 2);
            cell.setEncoding(HSSFWorkbook.ENCODING_UTF_16);
            cell.setCellValue("六");
            cell = row.createCell((short) 3);
            cell.setCellValue("30");
        }

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        try {
            workbook.write(baos);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        byte[] ba = baos.toByteArray();
        ByteArrayInputStream bais = new ByteArrayInputStream(ba);
        return bais;

    }

    @Override
    public String execute() throws Exception {
        // TODO Auto-generated method stub
        return super.execute();
    }

}


本文出自:http://kin111.blog.51cto.com/738881/167727
分享到:
评论

相关推荐

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

    下面将详细介绍如何在Struts2中利用POI在内存中生成Excel文件并提供下载。 首先,了解Apache POI的基本用法。POI提供了HSSFWorkbook类,用于处理Excel的XLS格式,而XSSFWorkbook则处理XLSX格式。这里我们主要讨论...

    struts2+poi实现导出Excel文件

    Struts2 和 Apache POI 的结合使用主要集中在创建 Web 应用程序中导出 Excel 文件的功能上。Apache POI 是一个 Java 库,允许开发者创建、修改和显示 Microsoft Office 格式的文件,其中包括 Excel。而 Struts2 是一...

    Java Struts2+poi插件 实现导出Excel

    在Java Web开发中,Struts2是一个非常流行的MVC框架,它简化了处理HTTP...总之,通过Struts2和Apache POI的结合,开发者可以方便地在Web应用中提供数据导出为Excel的功能,这对于数据分析、报表生成等场景非常实用。

    struts2 poi 导入xls xlsx 绝对兼容

    Struts2和Apache POI是Java开发中两个重要的库,它们在处理Web应用程序和Excel文件操作方面发挥着关键作用。Struts2是一个流行的MVC框架,用于构建动态、灵活的Web应用,而Apache POI是一个Java API,允许开发者读取...

    struts2+poi实现excel表格导出

    Struts2和Apache POI是Java开发中两个重要的工具,它们在处理Web应用程序中的数据导出,特别是Excel表格导出方面发挥着重要作用。Struts2是一个基于MVC设计模式的Web应用框架,它极大地简化了Java Web开发。而Apache...

    Struts2 poi动态导入导出Excel源码示例

    Struts2支持文件上传,你需要在struts.xml配置文件中启用这个特性,并在Action类中添加对应的参数类型为`File`和`String`的属性,以接收上传的文件和文件名。Struts2会自动将这些信息封装到Action中。 3. **使用...

    struts2处理Excel生成txt文件

    在Struts2框架中,可以使用`Action`类的`StreamingResult`结果类型来实现。 ```java public StreamingResult generateDownload() { StreamingResult result = new StreamingResult(); result.setFileName(...

    struts2实现excel导出

    在Struts2框架中,实现Excel导出的功能主要依赖于Apache POI库,这是一个用于读写Microsoft Office格式档案的Java库。以下将详细介绍如何利用Struts2和POI实现Excel导出。 首先,你需要在项目中引入Apache POI库。...

    Poi 读写Excel 合并ExcelSheet Struts2实现

    总的来说,通过Apache POI与Struts2的结合,我们可以轻松地在Java Web应用中实现Excel文件的读写和合并操作。这在数据分析、报表生成、数据导入导出等场景下非常实用。但要注意处理大数据时性能问题,因为内存中存储...

    SSH+POI文档

    反之,在导出Excel时,可以从数据库中查询数据,再通过POI生成Excel文件。 4. **POI的使用**: - **导入Excel**:首先,我们需要使用POI的API解析上传的Excel文件,例如使用`XSSFWorkbook`或`HSSFWorkbook`处理...

    Spring + struts2 + hibernate excel生成

    - 创建一个Struts2 Action,该Action负责从数据库中获取数据并使用Apache POI生成Excel文件。 - 在Action中,使用Spring的AOP来管理事务,保证数据操作的完整性和一致性。 - 配置Struts2结果类型为流式结果,将...

    struts2+jxl导出excel

    2. **配置Struts2 XML**:在`struts.xml`配置文件中,为`ExportExcelAction`添加一个对应的action配置,指定其执行方法和返回的结果类型。通常,我们会配置一个`stream`结果类型,这样可以将Excel文件作为流直接发送...

    Excel 导出 struts2 spring hibernate

    总结起来,本主题涵盖的核心知识点包括Struts2的Action、Spring的依赖注入和事务管理、Hibernate的数据库操作、Apache POI库的使用以及文件上传和下载的处理。通过理解这些内容,开发者能够构建起一个完整的、支持...

    poi-3.8组件

    6. **性能优化**:在处理大量数据时,POI提供了一些优化策略,比如SXSSF(Streaming Usermodel API)允许在内存有限的情况下处理大型Excel文件,因为它将部分数据写入磁盘。 7. **错误处理**:在读取或写入过程中,...

    struts2导出excel笔记

    通过以上步骤,我们可以实现一个简单的Struts2应用,该应用能够根据用户请求,使用Apache POI库动态生成并导出Excel文件。在实际项目中,可能还需要考虑数据过滤、排序、分页等功能,以及与数据库的交互,这些都可以...

    struts2导出excel.rar

    在Struts2中,我们可以利用POI创建HSSFWorkbook对象,然后通过创建Sheet和Row,填充数据,最后将其写入OutputStream,响应给客户端下载。 4. **Java导出excel小实例.doc** 这个文档可能包含了使用Java和Apache POI...

    使用poi从数据库导出excel表的示例

    在Struts1的Action类中,将生成的Workbook对象转换为InputStream,然后通过HttpServletResponse的setHeader和getOutputStream方法,设置Content-Disposition为“attachment”,让用户下载这个Excel文件。文件名可以...

    Struts文件上传和Excel导出

    2. **Action配置**:在Struts2的配置文件(struts.xml)中,需要定义一个Action,指定文件上传的处理方法,并配置允许的文件类型和大小限制。 3. **Action实现**:在Action类中,创建一个`File`对象和一个`String`...

    Struts2+Spring+Mybatis框架jar

    2. poi-ooxml-schemas-3.9.jar、xmlbeans-5.1.7.jar、poi-3.9.jar、poi-scratchpad-3.9.jar、poi-ooxml-3.9.jar:这些是Apache POI库,用于读写Microsoft Office格式的文件,如Excel,可能会在生成报表或者处理用户...

    apache poi 最新包

    5. **事件模型**:为了处理大文件,Apache POI 提供了事件模型(SXSSF),该模型不将整个文件保留在内存中,而是以流式处理数据,从而减少了内存消耗。 6. **读取和写入**:读取文件时,可以使用`WorkbookFactory`...

Global site tag (gtag.js) - Google Analytics