源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

SpringMvc导出Excel实例代码

  • 时间:2020-11-25 17:53 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:SpringMvc导出Excel实例代码
[b]前言[/b] 相信很多朋友在实际工作中都会要将数据导出成Excel的需求,通常这样的做法有两种。 一是采用JXL来生成Excel,之后保存到服务器,然后在生成页面之后下载该文件。 二是使用POI来生成Excel,之后使用Stream的方式输出到前台直接下载(ps:当然也可以生成到服务器中再下载。)。这里我们讨论第二种。 [b]Struts2的方式[/b] 通常我会将已经生成好的HSSFWorkbook放到一个InputStream中,然后再到xml配置文件中将返回结果更改为stream的方式。如下:
private void responseData(HSSFWorkbook wb) throws IOException {
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  wb.write(baos);
  baos.flush();
  byte[] aa = baos.toByteArray();
  excelStream = new ByteArrayInputStream(aa, 0, aa.length);
  baos.close();
}
配置文件:
<action name="exportXxx" class="xxxAction" method="exportXxx">
  <result name="exportSuccess" type="stream">
    <param name="inputName">excelStream</param>
    <param name="contentType">application/vnd.ms-excel</param>
    <param name="contentDisposition">attachment;filename="Undefined.xls"</param>
  </result>
</action>
这样即可达到点击链接即可直接下载文件的目的。 [b]SpringMVC的方式[/b] 先贴代码:
@RequestMapping("/exportXxx.action")
public void exportXxx(HttpServletRequest request, HttpServletResponse response,
    @RequestParam(value="scheduleId", defaultValue="0")int scheduleId){
  HSSFWorkbook wb = createExcel(scheduleId) ;
  try {
    response.setHeader("Content-Disposition", "attachment; filename=appointmentUser.xls");
    response.setContentType("application/vnd.ms-excel; charset=utf-8") ;
    OutputStream out = response.getOutputStream() ;
    wb.write(out) ;
    out.flush();
    out.close();
  } catch (IOException e) {
    e.printStackTrace();
  } 
}
其实springMVC和Struts2的原理上是一样的,只是Struts2是才去配置文件的方式。首先是使用[code]createExcel()[/code]这个方法来生成Excel并返回,最后利用[code]response[/code]即可向前台输出Excel,这种方法是通用的,也可以试用与[code]Servlet、Struts2[/code]等。我们只需要在[code]response[/code]的头信息中设置相应的输出信息即可。 [b]总结[/b] 不管是使用Struts2,还是使用SpringMVC究其根本都是使用的response,所以只要我们把response理解透了不管是下载图片、world、Excel还是其他什么文件都是一样的。 GitHub地址:[url=https://github.com/crossoverJie]https://github.com/crossoverJie[/url] 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程素材网。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部