{转载:http://developer.51cto.com/art/200906/130122.htm}
本文介绍了如何Struts2中POI在内存中生成文件并下载。POI是一个JAVA的实用jar包,可以生成excel文件。本文结合struts2和poi,说明如何在内存中生成一个excel文件并下载到客户端。
AD:
POI是一个JAVA的实用jar包,可以生成excel文件,通常在web开发用于把数据库的数据生成excel文件,然后通过下载提供给用户。
本文结合struts2和poi,说明如何在内存中生成一个excel文件并下载到客户端。
首先进行jsp文件,struts.xml文件和action文件的内容说明,对于struts.xml文件的下载配置和action文件中的对应的方法名的设定还不熟悉的朋友可以先看前面这篇文章struts2中下载文件的方法。
文件名:download.jsp
文件位置:网站根目录下的work目录下
文件内容:
下载文件 struts.xml文件
文件内容:
application/vnd.ms-excel attachment;filename="AllUsers.xls" excelFile 然后是action文件
文件名:ExcelDownloadAction.java
文件内容:
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(); } }
蓝色的代码使用poi生成一个excel格式的内容,红色的代码通过字节数组的输入输出流的转换提供给客户端最终的输入流。
好,代码完成后,运行一下,如图,
点击下载链接
可以下载也可以打开,我们选择打开,如图
最后声明,本文的poi生成和下载部分的代码实例,部分参考了网上教程实践而来。
分享到:
相关推荐
下面将详细介绍如何在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结果类型为流式结果,将...
6. **性能优化**:在处理大量数据时,POI提供了一些优化策略,比如SXSSF(Streaming Usermodel API)允许在内存有限的情况下处理大型Excel文件,因为它将部分数据写入磁盘。 7. **错误处理**:在读取或写入过程中,...
2. **配置Struts2 XML**:在`struts.xml`配置文件中,为`ExportExcelAction`添加一个对应的action配置,指定其执行方法和返回的结果类型。通常,我们会配置一个`stream`结果类型,这样可以将Excel文件作为流直接发送...
通过以上步骤,我们可以实现一个简单的Struts2应用,该应用能够根据用户请求,使用Apache POI库动态生成并导出Excel文件。在实际项目中,可能还需要考虑数据过滤、排序、分页等功能,以及与数据库的交互,这些都可以...
总结起来,本主题涵盖的核心知识点包括Struts2的Action、Spring的依赖注入和事务管理、Hibernate的数据库操作、Apache POI库的使用以及文件上传和下载的处理。通过理解这些内容,开发者能够构建起一个完整的、支持...
在"Struts2+JXL 下载 Excel 文档"的场景中,开发者通常会创建一个Action,这个Action负责生成Excel文档并提供下载。用户通过浏览器访问特定URL,Struts2框架接收到请求后,会路由到相应的Action。Action内部会利用...
在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. 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,可能会在生成报表或者处理用户...
6. **模板应用**:Apache POI允许开发者创建模板文件,并通过填充数据动态生成新的Office文档,这对于报告生成、自动化办公等场景非常有用。 7. **错误处理**:在处理Office文档时,可能出现各种错误,如文件损坏、...