2014-01-14 49 views
0

我正在使用extjs 4.1和spring mvc 3.我從extjs窗體傳遞一些值到彈簧控制器,然後int java端我創建一個Excel表格我從數據庫中獲得的數據。 我的問題是,我無法在創建excel時獲取保存文件對話框。我寫這段代碼也保存文件對話框,當在java中使用extjs創建excel文件

String filename="tradeReport.xlsx"; 
res.setHeader("Content-Type", "application/vnd.ms-excel"); 
res.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\""); 

的Excel圖表生成代碼:

try { 
    OutputStream outs=res.getOutputStream(); 
    //FileOutputStream fout=new FileOutputStream(new File("c:/data/tradereport.xls")); 
    workbook.write(outs); 
    //outs.flush(); 
    outs.close(); 
    System.out.println("File created!"); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

這個功能我在DAO類書面方式。

注:使用

時被成功創建-Excel

FileOutputStream fout=new FileOutputStream(new File("c:/data/tradereport.xls"));

請幫我一個solution.Thanks

+0

任何人都可以幫我解決這個問題 – ManikS

+0

嘗試設置內容類型:'res.setContentType(「Content-Type」,「application/vnd.ms-excel」);' –

+0

Darin,你可以看到我已經在頭文件中設置了內容類型, – ManikS

回答

0

爲了讓瀏覽器提示用戶將文件保存而不丟失當前窗口,我發現打開一個隱藏的iframe與下載網址效果很好的技巧。

var uri = 'http://www.com.test/my/download/url'; 
    Ext.DomHelper.append(Ext.getBody(), { 
     tag: 'iframe', 
     id: 'iframe-export', 
     frameBorder: 0, 
     width: 0, 
     height: 0, 
     css: 'display:none;visibility:hidden;height:0px;', 
     src: uri 
    }); 

它需要設置Content-Disposition和Content-Type標頭,就像您已經在做的那樣。

相關問題