<%@ 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文件并提供下载。 首先,了解Apache POI的基本用法。POI提供了HSSFWorkbook类,用于处理Excel的XLS格式,而XSSFWorkbook则处理XLSX格式。这里我们主要讨论...
Struts2 和 Apache POI 的结合使用主要集中在创建 Web 应用程序中导出 Excel 文件的功能上。Apache POI 是一个 Java 库,允许开发者创建、修改和显示 Microsoft Office 格式的文件,其中包括 Excel。而 Struts2 是一...
在Java Web开发中,Struts2是一个非常流行的MVC框架,它简化了处理HTTP...总之,通过Struts2和Apache POI的结合,开发者可以方便地在Web应用中提供数据导出为Excel的功能,这对于数据分析、报表生成等场景非常实用。
Struts2和Apache POI是Java开发中两个重要的库,它们在处理Web应用程序和Excel文件操作方面发挥着关键作用。Struts2是一个流行的MVC框架,用于构建动态、灵活的Web应用,而Apache POI是一个Java API,允许开发者读取...
Struts2和Apache POI是Java开发中两个重要的工具,它们在处理Web应用程序中的数据导出,特别是Excel表格导出方面发挥着重要作用。Struts2是一个基于MVC设计模式的Web应用框架,它极大地简化了Java Web开发。而Apache...
Struts2支持文件上传,你需要在struts.xml配置文件中启用这个特性,并在Action类中添加对应的参数类型为`File`和`String`的属性,以接收上传的文件和文件名。Struts2会自动将这些信息封装到Action中。 3. **使用...
在Struts2框架中,可以使用`Action`类的`StreamingResult`结果类型来实现。 ```java public StreamingResult generateDownload() { StreamingResult result = new StreamingResult(); result.setFileName(...
在Struts2框架中,实现Excel导出的功能主要依赖于Apache POI库,这是一个用于读写Microsoft Office格式档案的Java库。以下将详细介绍如何利用Struts2和POI实现Excel导出。 首先,你需要在项目中引入Apache POI库。...
总的来说,通过Apache POI与Struts2的结合,我们可以轻松地在Java Web应用中实现Excel文件的读写和合并操作。这在数据分析、报表生成、数据导入导出等场景下非常实用。但要注意处理大数据时性能问题,因为内存中存储...
反之,在导出Excel时,可以从数据库中查询数据,再通过POI生成Excel文件。 4. **POI的使用**: - **导入Excel**:首先,我们需要使用POI的API解析上传的Excel文件,例如使用`XSSFWorkbook`或`HSSFWorkbook`处理...
- 创建一个Struts2 Action,该Action负责从数据库中获取数据并使用Apache POI生成Excel文件。 - 在Action中,使用Spring的AOP来管理事务,保证数据操作的完整性和一致性。 - 配置Struts2结果类型为流式结果,将...
2. **配置Struts2 XML**:在`struts.xml`配置文件中,为`ExportExcelAction`添加一个对应的action配置,指定其执行方法和返回的结果类型。通常,我们会配置一个`stream`结果类型,这样可以将Excel文件作为流直接发送...
总结起来,本主题涵盖的核心知识点包括Struts2的Action、Spring的依赖注入和事务管理、Hibernate的数据库操作、Apache POI库的使用以及文件上传和下载的处理。通过理解这些内容,开发者能够构建起一个完整的、支持...
6. **性能优化**:在处理大量数据时,POI提供了一些优化策略,比如SXSSF(Streaming Usermodel API)允许在内存有限的情况下处理大型Excel文件,因为它将部分数据写入磁盘。 7. **错误处理**:在读取或写入过程中,...
通过以上步骤,我们可以实现一个简单的Struts2应用,该应用能够根据用户请求,使用Apache POI库动态生成并导出Excel文件。在实际项目中,可能还需要考虑数据过滤、排序、分页等功能,以及与数据库的交互,这些都可以...
在Struts2中,我们可以利用POI创建HSSFWorkbook对象,然后通过创建Sheet和Row,填充数据,最后将其写入OutputStream,响应给客户端下载。 4. **Java导出excel小实例.doc** 这个文档可能包含了使用Java和Apache POI...
在Struts1的Action类中,将生成的Workbook对象转换为InputStream,然后通过HttpServletResponse的setHeader和getOutputStream方法,设置Content-Disposition为“attachment”,让用户下载这个Excel文件。文件名可以...
2. **Action配置**:在Struts2的配置文件(struts.xml)中,需要定义一个Action,指定文件上传的处理方法,并配置允许的文件类型和大小限制。 3. **Action实现**:在Action类中,创建一个`File`对象和一个`String`...
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,可能会在生成报表或者处理用户...
5. **事件模型**:为了处理大文件,Apache POI 提供了事件模型(SXSSF),该模型不将整个文件保留在内存中,而是以流式处理数据,从而减少了内存消耗。 6. **读取和写入**:读取文件时,可以使用`WorkbookFactory`...