1,Struts2配置文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="base" extends="struts-default" namespace="/"> <action name="download" class="ivan.test.action.OutputExcelAction"> <!-- EXCEL 模板所在位置 --> <param name="templatePosition">/template.xls</param> <result type="stream" name="success"> <!-- 下载文件的类型,假如下载的是其他的,但你又不知道是什么格式,可以去 tomcat\conf\web.xml下找 --> <param name="contentType">application/vnd.ms-excel</param> <!-- 返回流 excelStream为action中的流变量名称 --> <param name="inputName">excelStream</param> <!-- attachment 这个位置的参数挺特殊的,可以设置成下载时,是否出现个下载提示框,或者直接下载之类的,怎么设置忘了,那个小本子找不到了 fileName指定生成的文件名字(这种方式合适动态生成文件名,比如做报表时,一般都要说是几月的统计数据之类)为action中变量 --> <param name="contentDisposition"> attachment;filename=${excelFileName} </param> <param name="bufferSize">1024</param> </result> </action> </package> </struts>
2,Action类
package ivan.test.action; import ivan.test.demo.ExcelUtil; import java.io.InputStream; import java.util.Map; public class OutputExcelAction extends BaseAction { private static final long serialVersionUID = 1L; // output 输出流变量 private InputStream excelStream; // output 下载文件名 private String excelFileName; // injection 模板路径 private String templatePosition; @Override public String execute() throws Exception { String templatePath = httpApplication.getRealPath("/") + "WEB-INF/classes" + templatePosition; Map<String, Object> map = ExcelUtil.getExcelMap(templatePath); excelStream = (InputStream) map.get("excelStream"); excelFileName = (String) map.get("excelFileName"); return SUCCESS; } public InputStream getExcelStream() { return excelStream; } public void setExcelStream(InputStream excelStream) { this.excelStream = excelStream; } public String getExcelFileName() { return excelFileName; } public void setExcelFileName(String excelFileName) { this.excelFileName = excelFileName; } public String getTemplatePosition() { return templatePosition; } public void setTemplatePosition(String templatePosition) { this.templatePosition = templatePosition; } }
3,生成Excel的输入流与Excel的名字
package ivan.test.demo; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.InputStream; import java.util.HashMap; import java.util.Map; 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; public class ExcelUtil { public static Map<String, Object> getExcelMap(String template) throws Exception { ByteArrayOutputStream os = null; try { // 读取模板 HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream( template)); // 按照业务逻辑写入Excel表 HSSFSheet sheet = workbook.getSheet("firstSheet"); for (int i = 1; i < 10; i++) { HSSFRow row = sheet.createRow(i); for (int j = 0; j < 10; j++) { HSSFCell cell = row.createCell(j); cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setCellValue("(" + i + " , " + j + ")"); } } // 获取Excel名字与Excel的InputStream流 os = new ByteArrayOutputStream(); workbook.write(os); InputStream excelStream = new ByteArrayInputStream(os.toByteArray()); String excelFileName = "text.xls"; // 加载到Map,并返回Map Map<String, Object> excelMap = new HashMap<String, Object>(); excelMap.put("excelFileName", excelFileName); excelMap.put("excelStream", excelStream); return excelMap; } catch (Exception e) { System.out.println("异常............."); throw e; } finally { if (os != null) { os.close(); } } } }
相关推荐
struts2内存中生成excel并下实例
Struts实时生成Excel文件下载
下面将详细介绍如何在Struts2中利用POI在内存中生成Excel文件并提供下载。 首先,了解Apache POI的基本用法。POI提供了HSSFWorkbook类,用于处理Excel的XLS格式,而XSSFWorkbook则处理XLSX格式。这里我们主要讨论...
总的来说,Struts2提供了便捷的方式来处理文件下载,而Apache POI使我们能够在Java中动态生成Excel文件,这两者结合为Web应用提供了强大的文件操作能力。在实际开发中,你需要根据具体的需求进行适当的调整和优化,...
这篇博客文章结合了这两个技术,展示了如何在Struts2应用中生成Excel文件并将其导出给用户下载。 在Java开发中,导出数据到Excel是常见的需求,特别是在处理大量结构化数据时,如报表或数据分析。JXL库提供了一个...
项目:Struts2UpAndDownLoadFile 1.实现文件的上传和下载 项目:Struts2HandleExcelFile 1.实现文件的上传和下载 2.利用apache的poi-3.5-FINAL-20090928.jar组件实现创建Excel表格。
通过上述步骤,我们就可以在Struts2框架下实现文件流方式的下载功能,无论是Excel、TXT还是图片,都能有效地直接返回给浏览器,让客户端进行下载。这种方式既节省了服务器资源,也提高了用户体验。在实际项目中,...
本主题聚焦于“java代码生成excel表并下载”,这是一个关键的后端功能,允许用户自定义表格内容并选择下载路径。下面我们将深入探讨如何实现这一功能。 首先,Java中用于生成Excel文件的主要库是Apache POI项目。...
首先,关于Struts2生成Excel下载的功能。在企业应用中,常常需要将数据库中的数据导出为Excel格式,方便用户进行数据分析或保存。在Struts2中,我们可以使用Apache POI库来创建和操作Excel文件。Apache POI是Java ...
这样,当用户访问特定的URL时,服务器就会触发`ExportExcelAction`的`execute`方法,生成Excel文件并发送给客户端下载。 总结一下,Struts2结合Apache POI实现数据导出到Excel的关键步骤包括: 1. 引入Apache POI的...
在Struts2框架中,实现Excel导出的功能主要依赖于Apache POI库,这是一个用于读写Microsoft Office格式档案的Java库。以下将详细介绍如何利用Struts2和POI实现Excel导出。 首先,你需要在项目中引入Apache POI库。...
此方法接受一个包含多种数据类型的列表,并返回一个 `InputStream`,该流可以被 Struts2 动作类用来生成并下载 Excel 文件。 3. **服务层接口实现**: 创建 `ExcelServiceImpl` 类来实现 `IExcelService` 接口。在...
在Struts2框架中,可以使用`Action`类的`StreamingResult`结果类型来实现。 ```java public StreamingResult generateDownload() { StreamingResult result = new StreamingResult(); result.setFileName(...
最后,通过Struts2的拦截器机制,当用户请求这个Action时,将会触发`exportExcel`方法,生成Excel文件并自动触发下载。 总结起来,利用Struts2和Apache POI,我们可以方便地实现从Web应用中导出数据到Excel的功能。...
这个"Struts2+Excel导出Demo"是一个实用的教学案例,可以帮助开发者理解如何在Java Web应用中集成Struts2和Excel导出功能。通过学习和实践这个Demo,开发者可以快速掌握相关技术,提高工作效率。
- **动态生成下载内容**:不同于传统的文件下载,这里的“动态生成”意味着文件内容可能不是预先存在的,而是根据某些条件在服务器端即时生成的,比如从数据库中提取数据,组合成Excel或CSV格式供用户下载。...
- **结果类型**:Struts2的结果类型可以配置为生成Excel文件,然后返回给客户端下载。 3. **Hibernate框架的角色**: - **数据持久化**:Hibernate简化了数据库操作,允许开发者通过对象模型与数据库交互。在生成...
2. **Struts2 Action配置**:创建一个Action类,该类将处理导出请求,并生成Excel文件。在struts.xml中定义相应的Action配置,例如: ```xml <param name="contentType">application/vnd.ms-excel ...
在Struts2 Action中,我们可以创建一个Excel工作簿,添加工作表,填充数据,然后设置响应头,使其以二进制流的方式下载到用户的本地计算机。 6. **数据库操作** 数据库文件存储在`webroot/db`目录下,这可能意味着...
5. **生成Excel**: 对于导出功能,你可以先从数据库中查询需要的数据,然后使用POI创建一个新的Workbook对象,创建Sheet,填充数据到Row和Cell中。最后,使用Struts2的`StreamingActionResult`或者自定义的Result...