`
shihuan830619
  • 浏览: 580294 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

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


struts.xml文件
文件内容:

Xml代码
1.<?xml version="1.0" encoding="UTF-8" ?> 
2.<!DOCTYPE struts PUBLIC  
3.    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
4.    "http://struts.apache.org/dtds/struts-2.0.dtd"> 
5. 
6.<struts> 
7. 
8.    <package name="default" extends="struts-default"> 
9.        <action name="excel" class="ExcelDownloadAction"> 
10.            <result name="success" type="stream"> 
11.                <param name="contentType">application/vnd.ms-excel</param> 
12.                <param name="contentDisposition">attachment;filename="AllUsers.xls"</param> 
13.                <param name="inputName">excelFile</param> 
14.            </result> 
15.        </action> 
16.    </package> 
17.</struts> 
<?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>



Java代码
1.import java.io.ByteArrayInputStream;  
2.import java.io.ByteArrayOutputStream;  
3.import java.io.IOException;  
4.import java.io.InputStream;  
5. 
6.import org.apache.poi.hssf.usermodel.HSSFCell;  
7.import org.apache.poi.hssf.usermodel.HSSFRow;  
8.import org.apache.poi.hssf.usermodel.HSSFSheet;  
9.import org.apache.poi.hssf.usermodel.HSSFWorkbook;  
10. 
11.import com.opensymphony.xwork2.ActionSupport;  
12. 
13.@SuppressWarnings("serial")  
14.public class ExcelDownloadAction extends ActionSupport {  
15. 
16.    public InputStream getExcelFile() {  
17.        HSSFWorkbook workbook = new HSSFWorkbook();  
18.        HSSFSheet sheet = workbook.createSheet("sheet1");  
19.        {  
20.            // 创建表头  
21.            HSSFRow row = sheet.createRow(0);  
22.            HSSFCell cell = row.createCell((short) 0);  
23.            cell.setCellValue("id");  
24.            cell = row.createCell((short) 1);  
25.            cell.setEncoding(HSSFWorkbook.ENCODING_UTF_16);  
26.            cell.setCellValue("姓");  
27.            cell = row.createCell((short) 2);  
28.            cell.setEncoding(HSSFWorkbook.ENCODING_UTF_16);  
29.            cell.setCellValue("名");  
30.            cell = row.createCell((short) 3);  
31.            cell.setEncoding(HSSFWorkbook.ENCODING_UTF_16);  
32.            cell.setCellValue("年龄");  
33. 
34.            // 创建数据  
35.            // 第一行  
36.            row = sheet.createRow(1);  
37.            cell = row.createCell((short) 0);  
38.            cell.setCellValue("1");  
39.            cell = row.createCell((short) 1);  
40.            cell.setEncoding(HSSFWorkbook.ENCODING_UTF_16);  
41.            cell.setCellValue("张");  
42.            cell = row.createCell((short) 2);  
43.            cell.setEncoding(HSSFWorkbook.ENCODING_UTF_16);  
44.            cell.setCellValue("四");  
45.            cell = row.createCell((short) 3);  
46.            cell.setCellValue("23");  
47. 
48.            // 第二行  
49.            row = sheet.createRow(2);  
50.            cell = row.createCell((short) 0);  
51.            cell.setCellValue("2");  
52.            cell = row.createCell((short) 1);  
53.            cell.setEncoding(HSSFWorkbook.ENCODING_UTF_16);  
54.            cell.setCellValue("李");  
55.            cell = row.createCell((short) 2);  
56.            cell.setEncoding(HSSFWorkbook.ENCODING_UTF_16);  
57.            cell.setCellValue("六");  
58.            cell = row.createCell((short) 3);  
59.            cell.setCellValue("30");  
60.        }  
61. 
62.        ByteArrayOutputStream baos = new ByteArrayOutputStream();  
63.        try {  
64.            workbook.write(baos);  
65.        } catch (IOException e) {  
66.            // TODO Auto-generated catch block  
67.            e.printStackTrace();  
68.        }  
69.        byte[] ba = baos.toByteArray();  
70.        ByteArrayInputStream bais = new ByteArrayInputStream(ba);  
71.        return bais;  
72. 
73.    }  
74. 
75.    @Override 
76.    public String execute() throws Exception {  
77.        // TODO Auto-generated method stub  
78.        return super.execute();  
79.    }  
80. 
81.} 
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(...

    Poi 读写Excel 合并ExcelSheet Struts2实现

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

    struts2实现excel导出

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

    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结果类型为流式结果,将...

    poi-3.8组件

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

    struts2+jxl导出excel

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

    struts2导出excel笔记

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

    Excel 导出 struts2 spring hibernate

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

    Struts2+JXL 下载 Excel 文档

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

    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文件。文件名可以...

    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,可能会在生成报表或者处理用户...

    java代码生成excel表并下载

    在"OrderManageAction.java"这个文件中,我们可以推测这是一个Struts2或者类似的MVC框架中的Action类。这个类可能包含了处理生成Excel请求的方法,例如: ```java public void generateAndDownloadExcel() { // ...

Global site tag (gtag.js) - Google Analytics