?

          最近項目需要將網頁上的數據導出為 excel ,雖然處理方法簡單,但是我這做了些不同情況的測試,以及我使用的是 PHP ,并非 JSP 。原理是一樣的,將頭部設置成 excel 對應的格式。所以我還是認為應該做個總結記錄下。希望其他同行遇到同樣的需求的時候我這篇文章能起到一點點微弱的正面作用。

          ?

          php

          <? php

          ??? header ( "Content-Type:application/vnd.ms-execl" );

          header ( "Content-Disposition:filename=test.xls" );

          ?>

          對應的 JSP

          <%

          response.setHeader("Content-disposition","inline; filename=test1.xls");

          ?%>


          其中,inline 線上瀏覽方式,對應 attachment 下載保存。當然不寫,他也會詢問你的。

          我的較完整的
          php 測試代碼 1

          <? php

          ??? header ( "Content-Type:application/vnd.ms-execl" );

          ??? header ( "Content-Disposition:filename=test.xls" );

          ??? echo "test1\t";

          ??? echo "test1\t";

          ??? echo "test1\t";

          ??? echo "test1\t";

          ??? echo "test1\n";

          ??? echo "test2\t";

          ??? echo "test2\t";

          ??? echo "test2\t";

          ??? echo "test2\t";

          ??? echo "test2\n";

          ?>

          測試打開網頁后,提示保存或者打開 excel 文件。結果也顯示是正確的。代碼中關于 \t’, 其實你取數據輪到下一列就用‘ \t ’,而遇到下一行就用‘ \n ’。簡單吧。而我隨后進行了 table 的原始測試,也就是頁面本來就有表格的那種。比如:

          php 測試代碼 2

          <? php

          ??? header ( "Content-Type:application/vnd.ms-execl" );

          ??? header ( "Content-Disposition:filename=test.xls" );

          ?>

          < table cellpadding =" 1 " cellspacing =" 1 " border =" 1 " >

          ??? < tr >

          ??? < td width =" 30 " > test1 </ td >

          ??? < td width =" 60 " > test1 </ td >

          ??? < td width =" 30 " > test1 </ td >

          ??? < td width =" 100 " > test1 </ td >

          ??? < td width =" 80 " > test1 </ td >

          ??? </ tr >

          ???

          ??? < tr >

          ??? < td > test2 </ td >

          ??? < td > test1 </ td >

          ??? < td > test1 </ td >

          ??? < td > test1 </ td >

          ??? < td > test1 </ td >

          ??? </ tr >

          </ table >

          ?

          測試結果順利導出頁面 table excel 。

          說明:

          1.??? 代碼指定的寬度是起了作用。如果不制定,當然就自由伸縮,以放得下為標準。

          2.?????? 剛開始表格 cellpadding =" 1 " cellspacing =" 1 " border =" 1 " 這些屬性我都沒有設置,導的 excel 是沒有單元格邊框的。

          3. 還有千萬別在 HTML 里搞那 7788 的頭聲明(因為這里指定了,別沖突了哦)。小心出錯。 o( _ )o…
          4. 當我們要導出word時候呢?
          你肯定已經知道方法了。對的,我們只需要把contentType改成"application/msword"以及filename的副檔名改成.doc就可以了。這個我沒有測試。

          posted on 2007-08-09 21:36 -274°C 閱讀(3506) 評論(1)  編輯  收藏 所屬分類: PHP


          FeedBack:
          # re: 從網頁導出excel
          2007-12-24 01:40 | java-he
          4.導出記事本:

          response.setContentType("application/octet-stream");
          response.setHeader("Content-Disposition","attachment; filename=脫機用戶資料修改說明.txt");

          header ( "Content-Type:application/octet-stream" );
          header ( "Content-Disposition:attachment; filename=脫機用戶資料修改說明.txt" );

          打印換行發(fā)現:\n 在記事本下顯示不是換行 所以用 \r\n
            回復  更多評論
            

          常用鏈接

          留言簿(21)

          隨筆分類(265)

          隨筆檔案(242)

          相冊

          JAVA網站

          關注的Blog

          搜索

          •  

          積分與排名

          • 積分 - 914107
          • 排名 - 40

          最新評論

          主站蜘蛛池模板: 吉木乃县| 巴马| 民权县| 太白县| 瑞丽市| 布拖县| 滨海县| 陇南市| 民权县| 五家渠市| 常州市| 渑池县| 乐山市| 武山县| 三都| 顺义区| 明溪县| 乐陵市| 德昌县| 桐梓县| 韩城市| 沅陵县| 霞浦县| 龙泉市| 建德市| 阜宁县| 南投市| 汶川县| 霞浦县| 循化| 西林县| 象山县| 普兰县| 朝阳县| 青神县| 中西区| 融水| 孟津县| 高陵县| 离岛区| 东港市|