基於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";  
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章