使用struts2的方式完成下载

对于下载excel2003,contentType如此设置

<result name="success" type="stream">
       <param name="contentType">application/vnd.ms-excel</param>
       <param name="inputName">inputStream</param>
       <param name="contentDisposition">attachment;filename="${#request.filename}.xls"</param>

  <!-- <param name="contentDisposition">attachment;filename="${fileName}"</param> -->
       <param name="bufferSize">1024</param>
   </result>

对于下载excel2007,contentType如此设置

<param name="contentType">application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</param>

注:

1.<param name="contentDisposition">中的attachment表示以附件形式保存到浏览器,而不是直接输在浏览器页面,${fileName} 为action中的文件名变量,action中需要声明该变量并写getter和setter方法

2.<param name="inputName">中的inputStream为输入流变量名,需要在action中声明并写getter和setter方法

在action中

  private InputStream inputStream;//输入流变量

  private String fileName;//下载文件名

关键代码:

public String download(){
  try {
  //获取模板文件的id,通过id,来查询出模板文件的信息,获取路径path
  Integer id=applicationTemplate.getId();
  ApplicationTemplate applicationTemplate=applicationTemplateService.findApplicationTemplateById(id);
  //获取路径path
 // String path=applicationTemplate.getPath();
  String path = "/download";
  //将路径path转成输入流
   InputStream in=new FileInputStream(new File(ServletActionContext.getServletContext().getRealPath("")+path));
   //将输入流的数据放置到模型驱动对象的InputStream的属性中
   applicationTemplate.setInputStream(in);
   
   //获取下载文件的名字
   String filename = applicationTemplate.getName();
   filename = new String(filename.getBytes("gbk"),"iso-8859-1");
   request.setAttribute("filename", filename);
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
  
  
  return "success";
 }

--------------------------------------------------------------------------------------

* @Return: 一:使用javaweb的方式完成下载,return null
 */
// public String download(){
//  try {
//   //1:获取传递的申请模板ID,使用申请模板ID,查询申请模板信息,获取路径path
//   Integer id = elecApplicationTemplate.getId();
//   ElecApplicationTemplate applicationTemplate = elecApplicationTemplateService.findApplicationTemplateByID(id);
//   //获取路径path
//   String path = applicationTemplate.getPath();
//   //2:将路径path转化成输入流,将输入流的信息,写到输出流(从response对象中获取输出流)
//   InputStream in = new FileInputStream(new File(ServletActionContext.getServletContext().getRealPath("")+path));
//   
//   //获取申请模板文件的文件名
//   String filename = applicationTemplate.getName();
//   filename = new String(filename.getBytes("gbk"),"iso-8859-1");
//   
//   //设置文件下载的格式
//   response.setContentType("application/msword");
//   //设置附件的数据处理方式
//   response.setHeader("Content-disposition", "attachment;filename="+filename+".doc");
//   //设置下载附件的缓冲区大小
//   response.setBufferSize(1024);
//   
//   OutputStream out = response.getOutputStream();
//   for(int b=-1;(b=in.read())!=-1;){
//    out.write(b);
//   }
//   out.close();
//   in.close();
//  } catch (Exception e) {
//   e.printStackTrace();
//  }
//  return null;
// }

下载excel的更多相关文章

  1. 360浏览器下载excel问题解决方式

    亲们有没有碰到过今天我遇到的这件事. 如果使用简单的链接.或者get方式提交的表单,去下载excel,那么360浏览器就会有问题. 问题是:它没把我用java生成的excel表格下载,而是去把我的列表 ...

  2. java的poi技术下载Excel模板上传Excel读取Excel中内容(SSM框架)

    使用到的jar包 JSP: client.jsp <%@ page language="java" contentType="text/html; charset= ...

  3. 在线读取Mongodb数据库下载EXCEL文件

    版本:Mongodb2.4.8 通过页面下载Excel文件 jsp <%@ page language="java" contentType="text/html; ...

  4. angularJS通过post方法下载excel文件

    最近工作中遇到,要使用angularJS的post方法来下载excel的情况.网上找到一个帖子:http://stackoverflow.com/questions/22447952/angularj ...

  5. asp.net 下载Excel (数据流,不保存)--客户端

    效果图: 前端页面 <html> <head> <title>Test For Excel</title> <script src="j ...

  6. Angularjs 通过WebApi 下载excel

    如果想知道 AngularJs 通过WebAPI 下载Excel.请看下文,这里仅提供了一种方案. 服务器端代码如下: protected HttpResponseMessage GenereateE ...

  7. 使用DateSet下载Excel

    这里我们使用Microsoft.Office.Interop.Excel.dll下载Excel,没有引用可点击下载 关键代码,ExcelHelper类 using System; using Syst ...

  8. 前端axios下载excel(二进制)

    需求:通过后端接口下载excel文件,后端没有文件地址,返回二进制流文件 实现:axios(ajax类似) 主要代码: axios:设置返回数据格式为blob或者arraybuffer 如: var ...

  9. 前端axios下载excel,并解决axios返回header无法获取所有数据的问题

    需求:通过后端接口下载excel文件,后端没有文件地址,返回二进制流文件 实现:axios(ajax类似) 主要代码: axios:设置返回数据格式为blob或者arraybuffer 如: var ...

  10. C# 之 下载EXCEL文件,自动用迅雷下载aspx

    在浏览器中导出 Excel 得时候,如果浏览器绑定了迅雷,则会下载aspx文件. 解决:下载EXCEL文件,自动用迅雷下载aspx if (Request.QueryString["id&q ...

随机推荐

  1. 【Social Listening实战】当数据分析遭遇心理动力学:用户深层次的情感需求浮出水面

    本文转自知乎 作者:苏格兰折耳喵 ----------------------------------------------------- 本文篇幅较长,分为五部分,在中间部分有关于心理分析工具的介 ...

  2. Maven传递依赖的范围

    calsspath:仅加载本工程中的配置文件 classpath*:既要加载本工程中配置文件,也要加载jar包中的配置文件

  3. python中str的索引、切片

    1 a = "hello" 2 a1 = a[1] 3 a2 = a[0:2] 4 print(a1) 5 print(a2) 我们通过索引获取字符串中指定位数的字符 通过切片获取 ...

  4. Android开发中常见的设计模式(二)——Builder模式

    了解了单例模式,接下来介绍另一个常见的模式--Builder模式. 那么什么是Builder模式呢.通过搜索,会发现大部分网上的定义都是 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建 ...

  5. django之manytomanyfield

    #mezzanine中BlogPost类的定义class BlogPost(Displayable, Ownable, RichText, AdminThumbMixin): "" ...

  6. oracle PL/SQL的介绍

    转自:http://blog.sina.com.cn/s/blog_4c302f060101i4o1.html 一 PL/SQL的介绍 1 PL/SQL是什么? PL/SQL(procedural l ...

  7. 链表有环判断,快慢指针两种方法/合并链表/删除重复元素/二分递归和while

    public static boolean hasCycle(ListNode head) { if (head == null || head.next == null) { return fals ...

  8. 用python实现一个简单的服务器

    打开命令行工具,输入: python3 -m http.server 8000(端口可以自己定) 通过访问:http://ip:8000/,就能给别人快速分享文件了.

  9. sql 替换字段中的部分字符,替换指定字符

    把列中凡是有2011的全部修改成2014,如 lieming 里的201101131431改成201401131431,写法:   update tab set lieming = replace(l ...

  10. Haskell语言学习笔记(70)NonEmpty

    NonEmpty(非空列表) infixr 5 :| data NonEmpty a = a :| [a] deriving (Eq, Ord) instance Functor NonEmpty w ...