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

如何在Struts的Action中直接使用POI生成Excel并下载

 
阅读更多
        前段时间需要做一个导出Excel的功能,用的POI,以前我的做法是模仿前人的代码,在Servlet中生成需要导出的Excel,然后调用workbook.write(out)将生成的Excel文件流写入到OutputStream out中去,其中out是由response.getOutputStream()得到的,当然一般我们都会OutputStream out = new BufferedOutputStream(response.getOutputStream())来提高效率,这样就可以生成对客户端的下载响应,主要代码如下:
		// 清空response
		response.reset();
		// 设置response的Header
		response.addHeader("Content-Disposition", "attachment;filename=Shit.xls");
		OutputStream out = new BufferedOutputStream(response.getOutputStream());
		response.setContentType("application/octet-stream");
		HSSFWorkbook workbook = new HSSFWorkbook();
		HSSFSheet sheet = workbook.createSheet("sheet");
		......//填充数据到sheet中
		workbook.write(out);
		out.flush();
		out.close();
        但是代码不在Action中的话,我们不能够在Struts框架中对文件的上传下载进行一些控制,所以需要把这段代码放置到Action中去。于是我遇到了这个问题:在Struts中下载文件的办法是提供一个stream类型的返回结果,并且需要在Action中提供一个返回结果为InputStream类型的get方法,于是Struts会自动调用这个get方法来读取源文件,如果服务器已经存有现成的文件,那么这二个InputStream很好满足,只要一个FileInputStream就OK了,但是像POI生成的Excel这种情况该怎么办呢?使用InputStream必须要提供给他一个现成的数据源,但POI并没有真正生成一个文件存放在服务器上,而是提供一个workbook.write(out)的方法将数据流写入到out中。

        最早我考虑的办法是先将Excel写入到一个临时文件,然后读取读取这个文件提供FileInputStream输入流,最后再把这个文件删除,可是这种做法太过曲折,不优雅。彷徨之际,两个Java类帮了我的大忙,它们就是:ByteArrayInputStream和ByteArrayOutputStream。于是我先将workbook写入到ByteArrayOutputStream中,然后用ByteArrayInputStream读取这个ByteArrayOutputStream中的数据,因为ByteArrayInputStream是InputStream的派生类,所以最后可以提供给Struts一个InputStream,问题就这样解决了!主要的代码如下:
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		workbook.write(baos);
		
		ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
		return bais;
分享到:
评论
1 楼 贝塔ZQ 2017-01-05  
实现生成excel文件,可以使用pageoffice插件实现。//新建excel文件,webCreateNew方法中的两个参数分别指代“操作人”和“新建excel文档的版本号”poCtrl1.webCreateNew("张佚名",DocumentVersion.Excel2007); 就可以实现的。

相关推荐

    struts2中利用poi导出excel

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

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

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

    Java Struts2+poi插件 实现导出Excel

    1. **Action配置**:在Struts2的配置文件中,为导出Excel的请求定义一个Action,设置其结果类型为StreamingResult或StreamingAction,这样可以直接将文件流输出到客户端。 2. **创建Workbook对象**:在Action的执行...

    struts2+poi实现导出Excel文件

    Struts2 和 Apache POI 的结合使用主要集中在创建 Web 应用程序中导出 Excel 文件的功能上。Apache POI 是一个 Java 库,允许开发者创建、修改和显示 Microsoft Office 格式的文件,其中包括 Excel。而 Struts2 是一...

    struts2 poi导出到excel

    在这个例子中,`ExportExcelAction`类中的`execute`方法负责生成Excel文件。首先,根据业务逻辑填充数据列表`dataList`。然后,使用POI创建一个`Workbook`对象,这是Excel文件的基础。接着,创建一个`Sheet`对象表示...

    Struts结合poi.jar生成Excel报表

    接下来,我们需要在Struts的动作类(Action)中编写生成Excel报表的逻辑。这通常包括以下步骤: 1. 创建`HSSFWorkbook`对象,这是Apache POI中的核心类,代表一个Excel工作簿。 2. 创建`HSSFSheet`对象,表示工作簿...

    struts2+poi实现excel文件的导出

    Struts2 和 Apache POI 的整合允许开发者轻松地实现在 Web 应用程序中导出 Excel 文件的功能。Apache POI 是一个 Java 库,它提供了处理 Microsoft Office 格式(如 .xls 和 .xlsx)的能力,包括创建、读取和修改 ...

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

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

    使用poi从数据库导出excel表的示例

    在Struts1的Action类中,将生成的Workbook对象转换为InputStream,然后通过HttpServletResponse的setHeader和getOutputStream方法,设置Content-Disposition为“attachment”,让用户下载这个Excel文件。文件名可以...

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

    Struts2支持文件上传,你需要在struts.xml配置文件中启用这个特性,并在Action类中添加对应的参数类型为`File`和`String`的属性,以接收上传的文件和文件名。Struts2会自动将这些信息封装到Action中。 3. **使用...

    Poi 读写Excel 合并ExcelSheet Struts2实现

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

    struts2+poi实现excel表格导出

    Struts2和Apache POI是Java开发中两个重要的工具,它们在处理Web应用程序中的数据导出,特别是Excel表格导出方面发挥着重要作用。Struts2是一个基于MVC设计模式的Web应用框架,它极大地简化了Java Web开发。而Apache...

    struts2 POI-3.7 excel上传下载

    在本项目"struts2 POI-3.7 excel上传下载"中,我们将深入探讨如何使用Struts2和POI-3.7来实现Excel文件的上传和下载功能。 首先,我们需要理解Struts2中的文件上传机制。Struts2提供了FileUpload拦截器,它允许用户...

    POI下载excel的列子

    这个示例代码对于理解如何在Java Web环境中使用Apache POI生成并提供Excel文件下载具有指导意义,同时涵盖了Struts2框架中的Action处理和文件流操作。开发者可以根据提供的代码进行学习和实践,进一步提升对这些技术...

    struts2导出Excel poi

    这样,当用户访问特定URL时,Struts2会调用Action中的方法,生成Excel文件并返回给浏览器下载。 总结来说,通过Struts2和Apache POI的结合,你可以轻松实现从SQL Server数据库导出数据到Excel的功能。这种方式适用...

    POI导出Excel表格

    - 如果使用反射,可以遍历实体类的所有字段,动态生成Excel列头并设置数据。 - 将工作簿写入输出流,如果是Web应用,这通常是一个HTTP响应流。 - 设置响应头,指示这是一个Excel文件,让用户可以选择保存或打开。...

    struts2 poi,jxl向excel表中插入记录源代码

    这个项目的核心功能是允许用户通过前端界面提交数据,然后这些数据会被Struts2的Action处理,并使用POI或JXL库写入到指定的Excel文件中。为了实现这一功能,你需要理解以下几个关键知识点: 1. **Struts2 Action**:...

    java代码生成excel表并下载

    本主题聚焦于“java代码生成excel表并下载”,这是一个关键的后端功能,允许用户自定义表格内容并选择下载路径。下面我们将深入探讨如何实现这一功能。 首先,Java中用于生成Excel文件的主要库是Apache POI项目。...

    struts2 poi 导入xls xlsx 绝对兼容

    在Struts2中使用Apache POI,可以方便地实现Excel文件的上传、解析和下载功能。用户可以通过Web界面上传Excel文件,Struts2将文件上传请求转发到Action,Action中利用Apache POI读取和处理Excel内容。例如,可以读取...

    POI + Struts2 实现Excel导出工具包

    在Struts2中,我们可以利用Action类和Result类型来处理请求和响应,结合POI库,可以实现在服务器端生成Excel文件并返回给客户端下载。 以下是实现Excel导出的基本步骤: 1. **引入依赖**:首先,你需要在项目的pom...

Global site tag (gtag.js) - Google Analytics