使用struts2和POI,生成并下载excel文件

本文详细介绍了如何利用POI和Struts2框架实现页面生成并下载Excel文件的功能,包括Maven配置、Struts.xml配置、业务逻辑实现以及部署流程。同时提供了参考链接和代码示例,帮助开发者快速掌握该技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近做了一个需求,点击页面生成并下载Excel文件,现记录下来,便于以后回顾!

POI的Maven配置如下:

<dependency>  
     <groupId>org.apache.poi</groupId>  
     <artifactId>poi</artifactId>  
     <version>3.9</version>  
</dependency>

 

struts.xml的配置如下:

<action name="downloadWorkload" class="DownloadWorkloadAction" method="exportExcel">
  <result name="success" type="stream">
    <param name="contentType">application/vnd.ms-excel</param>
    <param name="inputName">excelStream</param>
    <param name="contentDisposition">attachment;filename=${excelFileName}</param>  
    <param name="bufferSize">4096</param>  
  </result>
</action>

其中,stream类型的结果共可以指定7个参数:

  • contentType:下载文件的类型。
  • contentLength:下载文件的长度,用于浏览器的进度条显示。
  • contentDisposition:指定文件下载的默认名字,如果不指定则使用Action名.action。
  • inputName:Action中用于返回InputStream的get方法的名字,默认为inputStream,因此,我们的Action中定义了getInputStream的方法。
  • bufferSize:缓冲区大小,默认为(4096)即4k。
  • allowCaching:是否允许浏览器进行缓存。
  • contentCharSet:HTTP响应头信息中的编码方式。

配好struts2的配置之后,就可以写整个Action的业务逻辑了,可以分为以下两步:

1.将目标数据写入POI的 HSSFWorkbook 对象中:

HSSFWorkbook wb = new HSSFWorkbook();
  HSSFSheet sheet = wb.createSheet(“test.xls”);
  HSSFRow titleRow = sheet.createRow(0);
  for (int i = 0; i < titleArray.length; i++) {
    HSSFCell cell = titleRow.createCell(i);
    cell.setCellValue(titleArray[i]);
  }

2.将生成 HSSFWorkbook  对象写入InputStream流中,可以使用ByteArrayInputStream或者FileInputStream,会有不同效果:

  1)使用ByteArrayInputStream,将数据写入字节流数组,直接输出,在服务器不会产生excel文件;

  ByteArrayOutputStream os = new ByteArrayOutputStream(); 
  wb.write(os);
  os.flush();
  byte[] fileContent = os.toByteArray(); 
  excelStream = new ByteArrayInputStream(fileContent);
  os.close();

  2)使用FileInputStream,将数据写入文件流,在服务器会产生excel文件;

  File file = new File("/data/" + excelFileName);
  FileOutputStream writer
= new FileOutputStream(file);
  wb.write(writer);
  excelStream
= new FileInputStream(file);   writer.close();

  部署好工程后,就可以通过URL访问服务器,下载Excel文件了!

 

  参考资料:http://blog.youkuaiyun.com/zht666/article/details/11091505

转载于:https://www.cnblogs.com/FishAndWater/p/4124848.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值