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

Struts2通过流格式生成Excel下载文件

阅读更多
  在工作中需要在JSP页面中,将POI生成的Excel文件直接下载,开发平台是基于Struts2+Spring2的,在网上查了一下,例子不少,也都给我提供了一定的帮助,但很少有拿来不需要进行调试就直接能用的代码例子。所以我把自己最后的实现代码贴出来,希望能对后来者有一定的帮助,或许实现方法不是最好的,但应该是不需要进行过多调试就可以直接用的。
  主要关注@Result的params参数设置部分的代码

public class EfficDataAction extends ActionSupport {

        //...省略部分代码
	private InputStream inputStream;
	private String contentDisposition;
	private String documentFormat = "xls";
	private String contentType;

	public String getContentType() {
		return documentFormat == "xlsx" ? "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
				: "application/vnd.ms-excel;charset=ISO8859-1";
	}

	@Resource
	private EfficDataService efficdataservice;

	public String getContentDisposition() {
		return contentDisposition;
	}

	public InputStream getInputStream() {
		return inputStream;
	}

	public void setInputStream(InputStream inputStream) {
		this.inputStream = inputStream;
	}

	public void setContentDisposition(String contentDisposition) {
		this.contentDisposition = contentDisposition;
	}

	public String getDocumentFormat() {
		return documentFormat;
	}

	public void setDocumentFormat(String documentFormat) {
		this.documentFormat = documentFormat;
	}

	public EfficDataService getEfficdataservice() {
		return efficdataservice;
	}

	@Resource
	public void setEfficdataservice(EfficDataService efficdataservice) {
		this.efficdataservice = efficdataservice;
	}

        //...省略部分代码

    //这里的params参数配置是关键
    @Action(value = "/createefficfile", results = { @Result(name = "success", type = "stream") }, params = {
			"contentType", "${contentType}", "inputName", "${inputStream}",
			"contentDisposition", "${contentDisposition}", "bufferSize", "2048" })
	public String createefficfile() throws Exception {

		ByteArrayOutputStream baos = new ByteArrayOutputStream();

		//...下面的3行代码是我生成Excel文件用的,请更具实际需要裁减
                HSSFWorkbook book = new HSSFWorkbook();
		book = efficdataservice.createEfficCollectFile(this);
		book.write(baos);

		//...下面的代码是设置Excel文件下载的一些必须内容
                //...文件名需要进行转码,不然中文的话可能会有问题
                this.setInputStream(new ByteArrayInputStream(baos.toByteArray()));
		this.setContentDisposition("filename=\\"
				+ java.net.URLEncoder.encode(getUploadFileFileName(), "UTF-8")
				+ getDocumentFormat());

		return "success";
	}

}



我是用注解来配置Struts2的Action的,用xml配置文件应该也不会有问题。

转载请注明出处...
分享到:
评论

相关推荐

    Struts2文件流方式导出下载excel、Txt、image图片

    通过上述步骤,我们就可以在Struts2框架下实现文件流方式的下载功能,无论是Excel、TXT还是图片,都能有效地直接返回给浏览器,让客户端进行下载。这种方式既节省了服务器资源,也提高了用户体验。在实际项目中,...

    Struts实时生成Excel文件下载

    Struts实时生成Excel文件下载

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

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

    [转]java struts2+jxl生成并导出Excel

    这篇博客文章结合了这两个技术,展示了如何在Struts2应用中生成Excel文件并将其导出给用户下载。 在Java开发中,导出数据到Excel是常见的需求,特别是在处理大量结构化数据时,如报表或数据分析。JXL库提供了一个...

    struts2+poi实现导出Excel文件

    然后,将这个输出流作为输入流提供给 Struts2 的结果配置,通过 `HttpServletRequest` 获取请求响应对象,设置响应头(如 Content-Type 和 Content-Disposition),最后将输出流写入响应输出流,完成文件下载。...

    struts2 支持的下载以及如何动态生成excel表格文件

    总的来说,Struts2提供了便捷的方式来处理文件下载,而Apache POI使我们能够在Java中动态生成Excel文件,这两者结合为Web应用提供了强大的文件操作能力。在实际开发中,你需要根据具体的需求进行适当的调整和优化,...

    struts2处理Excel生成txt文件

    本示例涉及的是从Excel文件中读取数据,并将其转换成TXT文件的过程。这个过程通常用于数据迁移、数据分析或者格式转换等场景。以下是对这个主题的详细阐述: 1. **读取Excel文件**: 在Java开发中,我们可以使用...

    struts2生成Excel文件上传下载

    项目:Struts2UpAndDownLoadFile 1.实现文件的上传和下载 项目:Struts2HandleExcelFile 1.实现文件的上传和下载 2.利用apache的poi-3.5-FINAL-20090928.jar组件实现创建Excel表格。

    Java Struts2+poi插件 实现导出Excel

    将Workbook写入到HttpServletResponse的OutputStream中,设置合适的Content-Type(如application/vnd.ms-excel)和文件名头(Content-Disposition),这样浏览器就会弹出下载对话框,用户可以选择保存Excel文件。...

    struts2中利用poi导出excel

    最后,通过Struts2的拦截器机制,当用户请求这个Action时,将会触发`exportExcel`方法,生成Excel文件并自动触发下载。 总结起来,利用Struts2和Apache POI,我们可以方便地实现从Web应用中导出数据到Excel的功能。...

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

    最后,使用Struts2的`StreamingActionResult`或者自定义的Result类型,将Workbook对象转换为流,返回给浏览器下载。 6. **运行说明**: 源码中通常会包含一个README文件,说明如何配置环境(如设置Struts2的配置...

    Struts结合poi.jar生成Excel报表

    5. 生成Excel文件时,可以将工作簿写入到OutputStream,然后由Struts框架返回给客户端,或者保存到服务器的指定位置。 描述中提到,代码中有详细的注释,这对于初学者来说是非常宝贵的资源。通过阅读这些注释,可以...

    Spring + struts2 + hibernate excel生成

    - **结果类型**:Struts2的结果类型可以配置为生成Excel文件,然后返回给客户端下载。 3. **Hibernate框架的角色**: - **数据持久化**:Hibernate简化了数据库操作,允许开发者通过对象模型与数据库交互。在生成...

    struts2实现excel导出

    在客户端,用户可以通过点击一个链接或按钮触发这个Action,浏览器将弹出一个对话框让用户选择保存或打开生成的Excel文件。 这就是使用Struts2和Apache POI实现Excel导出的基本步骤。注意,实际的项目可能需要考虑...

    Struts2文件动态上传和动态下载(可自动生成下载内容)

    - **动态生成下载内容**:不同于传统的文件下载,这里的“动态生成”意味着文件内容可能不是预先存在的,而是根据某些条件在服务器端即时生成的,比如从数据库中提取数据,组合成Excel或CSV格式供用户下载。...

    struts2 excel下载DEMO和jquery生成二维码DEMO

    然后,创建一个Action类,定义一个方法来生成Excel文件,该方法将查询到的数据转换为POI的工作表对象。最后,通过Struts2的StreamingResult或者FileNameAwareOutputStreamActionOutputStream结果类型,将生成的Excel...

    Struts2+JXL 下载 Excel 文档

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

    struts2整合apache的jxl导入导出excel表格

    此方法接受一个包含多种数据类型的列表,并返回一个 `InputStream`,该流可以被 Struts2 动作类用来生成并下载 Excel 文件。 3. **服务层接口实现**: 创建 `ExcelServiceImpl` 类来实现 `IExcelService` 接口。在...

    struts2 poi导出到excel

    这样,当用户访问特定的URL时,服务器就会触发`ExportExcelAction`的`execute`方法,生成Excel文件并发送给客户端下载。 总结一下,Struts2结合Apache POI实现数据导出到Excel的关键步骤包括: 1. 引入Apache POI的...

    Struts2+Excel导出Demo,测试可用带JAR包

    5. **响应流**: 为了将生成的Excel文件发送到浏览器,你需要将Excel内容转换为字节流,并设置响应头,告知浏览器这是一个Excel文件,例如设置Content-Type为"application/vnd.ms-excel"。 6. **Struts2配置**: 配置...

Global site tag (gtag.js) - Google Analytics