<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 42  文章 - 71  trackbacks - 0
    <2008年4月>
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910

    常用鏈接

    留言簿

    隨筆檔案

    文章分類

    文章檔案

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    Technorati 標(biāo)簽: ,,,

    因?yàn)槁牭接型掠懻揓SP輸出Excel文件的,就是在頁面上有一個(gè)【導(dǎo)出】按鈕,能夠?qū)⒉樵兘Y(jié)果導(dǎo)出到Excel文件讓用戶下載。有人說要用POI在后臺(tái)生成臨時(shí)的Excel文件,然后通過讀取FileStream寫入到OutputStream來解決。其實(shí)這個(gè)功能不需要這么重型的武器的,雖然很多人討厭MS,但是不得不承認(rèn)MS絕對(duì)不是亂蓋的,IE和Office產(chǎn)品的幾近完美的結(jié)合就是一個(gè)列子。頁面里面的Table很容易就可以導(dǎo)出到Excel文件,而且格式都能夠完好的保存,所以如果要將查詢結(jié)果導(dǎo)出到Excel,只需將頁面的Context-Type修改一下就可以了:

    <%@ page language="java" contentType="application/vnd.ms-excel"%>

    然后請(qǐng)求這個(gè)頁面的時(shí)候,就會(huì)出現(xiàn)這樣的IE窗口:

    image

     

    看到上面的菜單了么?出了IE的,還有Excel的。而且在點(diǎn)擊“文件”->“另存為”的時(shí)候,如果選擇“Excel工作簿”,那么保存的文件就是真正的轉(zhuǎn)換到Excel文件的存儲(chǔ)格式了。

     

    不過,有一個(gè)問題是,如果我不希望直接在IE里面打開Excel文件,我希望能夠提供那個(gè)打開/保存的對(duì)話框,應(yīng)該如何做?

    模模糊糊記得很久很久以前用過一個(gè)參數(shù),于是乎,google一下吧,找到了,就是這個(gè)Content-Disposition參數(shù),HTTP Response Header的一個(gè)參數(shù)。但是這個(gè)不是標(biāo)準(zhǔn)參數(shù),查看一下HTTP/1.1的規(guī)范文檔,對(duì)于這個(gè)參數(shù)的解釋大意如下:

    Content-Disposition參數(shù)本來是為了在客戶端另存文件時(shí)提供一個(gè)建議的文件名,但是考慮到安全的原因,就從規(guī)范中去掉了這個(gè)參數(shù)。但是由于很多瀏覽器已經(jīng)能夠支持這個(gè)參數(shù),所以只是在規(guī)范文檔中列出,但是要注意這個(gè)不是HTTP/1.1的標(biāo)準(zhǔn)參數(shù)。

    于是,在頁面加入一行代碼:

    <%
    response.addHeader("Content-Disposition", "attachment;filename=test.xls");
    %>

     

    能夠看到“文件下載”的對(duì)話框了:

    image

     

    測(cè)試了一下,其實(shí)IE是根據(jù)Content-Disposition中filename這個(gè)段中文件名的后綴來識(shí)別這個(gè)文件類型的,所以,如果有很多種文件類型的時(shí)候,可以將Content-Type設(shè)置為二進(jìn)制模式的:

    <%@ page language="java" contentType="application/octet-stream"%>

     

    附Content-Disposition的解釋:

    19.5.1 Content-Disposition The Content-Disposition response-header field has been proposed as a means for the origin server to suggest a default filename if the user requests that the content is saved to a file. This usage is derived from the definition of Content-Disposition in RFC 1806 [35].

    content-disposition = "Content-Disposition" ":" disposition-type *( ";" disposition-parm )
    disposition-type = "attachment" | disp-extension-token
    disposition-parm = filename-parm | disp-extension-parm
    filename-parm = "filename" "=" quoted-string
    disp-extension-token = token
    disp-extension-parm = token "=" ( token | quoted-string )

    An example is
        Content-Disposition: attachment; filename="fname.ext"

     

    The receiving user agent SHOULD NOT respect any directory path information present in the filename-parm parameter, which is the only parameter believed to apply to HTTP implementations at this time. The filename SHOULD be treated as a terminal component only.

    If this header is used in a response with the application/octet- stream content-type, the implied suggestion is that the user agent should not display the response, but directly enter a `save response as...' dialog.

    posted on 2008-04-23 18:23 YODA 閱讀(11868) 評(píng)論(4)  編輯  收藏

    FeedBack:
    # re: HTTP Response Header 的 Content-Disposition 2008-04-23 19:08 BeanSoft
    .... 還有些人不用 Windows 或者 Office 的。呵呵,雖然這樣也可以。  回復(fù)  更多評(píng)論
      
    # re: HTTP Response Header 的 Content-Disposition 2008-04-26 09:45 隔葉黃鶯
    比如有些報(bào)表,記錄多的情況,確實(shí)不希望在瀏覽器中打開那個(gè)Excel,就應(yīng)該這么做的。

    樓主還有一個(gè)地方要注意的,如果要指定下載文件名是中文的話,可能就需要對(duì)那個(gè)文件名字符串編碼成 ISO8859-1  回復(fù)  更多評(píng)論
      
    # re: HTTP Response Header 的 Content-Disposition 2008-04-27 21:48 YODA
    多謝樓上兩位的補(bǔ)充  回復(fù)  更多評(píng)論
      
    # re: HTTP Response Header 的 Content-Disposition 2009-06-06 10:18 阿里哇
    @隔葉黃鶯
    好的,非常感謝。  回復(fù)  更多評(píng)論
      

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲成AV人综合在线观看| 亚洲一区日韩高清中文字幕亚洲 | 性色av极品无码专区亚洲| 夜夜嘿视频免费看| 久久99精品视免费看| 黄色三级三级三级免费看| 亚洲精品白色在线发布| 亚洲av无码乱码国产精品| 亚洲婷婷国产精品电影人久久| 天天天欲色欲色WWW免费| 8888四色奇米在线观看免费看| 亚洲精品黄色视频在线观看免费资源| 亚洲欧美国产欧美色欲| 亚洲最新在线视频| 日韩精品一区二区亚洲AV观看 | 美女免费视频一区二区三区| 亚洲午夜国产精品无卡| 亚洲综合久久综合激情久久| 亚洲色成人中文字幕网站| 亚洲男人天堂2020| 嫩草在线视频www免费观看 | 免费99热在线观看| 色播在线永久免费视频| 免费无码又黄又爽又刺激| 成人免费大片免费观看网站| 182tv免费视视频线路一二三| 在线看片免费人成视频播| 怡红院免费全部视频在线视频| 国产精品免费观看视频| 一级A毛片免费观看久久精品| 青青青视频免费观看| 亚洲一区免费视频| 国产成人精品日本亚洲11| 国产日本亚洲一区二区三区 | 成人免费男女视频网站慢动作| 免费观看激色视频网站bd| 日韩毛片免费一二三| 无套内谢孕妇毛片免费看看| 污污免费在线观看| 国产免费MV大全视频网站| 特级做A爰片毛片免费看无码 |