基于Struts2的Excel的下载

基于Struts2的Excel的下载,需要注意的问题比较多的,现在总结一下。

1、在struts.xml中需要配置下载设置
2、如果需要前端弹出下载框,则不能使用ajax提交,需要用form表单提交
3、 可用流返回

struts.xml

<result name="down" type="stream">  
                <!-- 下载文件的类型,如果你不知道是什么格式,可以去 tomcat\conf\web.xml下找 -->  
                <param name="contentType">application/vnd.ms-excel</param>  
                <!-- 返回流 excelStream为action中的流变量名称 -->  
                <param name="inputName">excelStream</param>  
                <!-- attachment可以设置成下载时,是否出现个下载提示框,或者直接下载之类的。fileName指定生成的文件名字为action中变量-->  
                <param name="contentDisposition">  
                    attachment;filename=${excelFileName}  
                </param>  
                <param name="bufferSize">1024</param>  
            </result>   

ExportExcelAction.java

    private InputStream excelStream;  //输出流变量  
    private String excelFileName; //下载文件名  

    public InputStream getExcelStream() {  
        return excelStream;  
    }  
    public void setExcelStream(InputStream excelStream) {  
        this.excelStream = excelStream;  
    }  
    public String getExcelFileName() {  
        return excelFileName;  
    }  
    public void setExcelFileName(String excelFileName) {  
        this.excelFileName = excelFileName;  
    }  


    public String exportExcel() throws IOException{


        //创建一个HSSFWorkbook,对应一个Excel文件  
        HSSFWorkbook wb = new HSSFWorkbook();  

        ...

        //将文件存到流中  
        ByteArrayOutputStream os = new ByteArrayOutputStream();  
        wb.write(os);  
        byte[] fileContent = os.toByteArray();  
        ByteArrayInputStream is = new ByteArrayInputStream(fileContent);  
        excelStream = is;  //文件流  
        excelFileName = System.currentTimeMillis()+".xls"; //设置下载的文件名  
        return "down";  
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值