隨筆-95  評論-31  文章-10  trackbacks-0
          網上流傳了大量大量的如何導出,結果都不太實用。
          網上流傳通用的js導出word代碼如下:
               function method1(){
                var oWD = new ActiveXObject("Word.Application"); 
                oWD.WindowState = 2; 
                var oDC = oWD.Documents.Add("",0,1); 
                var oRange =oDC.Range(0,1); 
                var sel = document.body.createTextRange(); 
                sel.moveToElementText(huahai);  //里面參數為div的id或者form的id或者table的id或者...表示將此范圍內輸出word
                sel.select(); 
                sel.execCommand("Copy"); 
                oRange.Paste(); 
                oWD.Application.Visible = true; 
                }
          <body>
          <div id="huahai">
          </div>
          </body>
          <input type="button" onclick="javascript:method1();" value="導出為WORD">
          以上方法可導出任意jsp(包括圖片)但是除了以下內容:
          凡是讓用戶輸入帶有<input>或者<textarea>等等等標簽輸入框地方就不能導出成word了。
          比如一個table(如下所示),如果使用上述辦法就不能導出。
          如果去掉<input>標簽那么就可以導出,但是問題就是我就是要全部導出.......
          <table id="table1">
          <tr>
          <td>姓名</td><td><input type="text" size="5"></td>
          <td>年齡</td><td><input type="text" size="5"></td>
          </tr>
          <table>
          解決辦法:
          下面給出一個JSP,里面包含div、form、table、image、以及各種<input>標簽導出為word
          <%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"%>
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html>
          <head>
          </head>
          <body>
          <form action="" id="huahai" >
            <div align="center">
             <div align="center" id="div_content">
              <h2>
               <font color="red">測試導出word</font>
              </h2>
              <h4>
               <font color="red">測試導出word</font>
              </h4>
              </div>
          <table id="table1">
          <tr>
          <td>姓名</td><td><input type="text" size="5"></td>
          <td>年齡</td><td><input type="text" size="5"></td>
          </tr>
          <table>
          <div id="img">
              <hr/>
              <img src="MM.jpg" height="45%" width="30%">
              </br>
          </div>
           <div id="text_area">
              <textarea name="warn_task" wrap="off" cols="80" rows="12">區域內容:</textarea>
              </textarea>
              <hr />
          </div>
          <input type="button" onclick="javascript:test();" value="測試">
          </div>
           </form>
          </body>
          </html>
          下面給出js代碼(加入<head>標簽之間):
          <script type="text/javascript">
             var oWD = new ActiveXObject("Word.Application");
             var oDC = oWD.Documents.Add("",0,1);
             var oRange =oDC.Range(0,1);
          function word(id,way){
             var sel = document.body.createTextRange();
             sel.moveToElementText(id);
             sel.select();
             sel.execCommand(way);
             oRange.Paste();
          }

          function test(){
             var table=document.getElementById('table1');
             var table_cells = table.rows[0].cells;
             var form_elements = document.getElementById('huahai');
             word(div_content,'Copy'); //調用word函數,將div_content范圍內容拷貝到word里面。
             for(i=0;i<table_cells.length;i++){
                 oRange =oDC.Range(oRange.End-1,oRange.End); //設定位置依次由上往下、從左往右
                 var sel = document.body.createTextRange();
                 sel.moveToElementText(table_cells[i]); //將單元格內容復制到word
                 sel.select();
                 sel.execCommand("Copy");
                 sel.moveEnd('character');  //不加這句導出不了,里面參數為character、不是copy
                 oRange.Paste();
                 oRange =oDC.Range(oRange.End-1,oRange.End);
             }
              oRange =oDC.Range(oRange.End-1,oRange.End); //復制不同的東西,需要寫這句繼續 寫死的這句話就是位置
              var img = document.getElementById('img');
              word(img,'Copy');//將img范圍內容拷貝到word里面。
              oRange =oDC.Range(oRange.End-1,oRange.End);
              var text_area = document.getElementById('text_area');
              word(text_area,'Copy');//將text_area范圍內容拷貝到word里面。
              oRange =oDC.Range(oRange.End-1,oRange.End);
              oWD.Application.Visible = true; //這句意思是所有操作完畢后,在顯示出來,如果寫在里面,會發現word打開后,什么標簽啊、內容啊就跟打字機一樣往里面填
          }
          </script>
           
          最后補充:IE工具設置,安全--啟動-對沒有標記為安全的Activex的控件進行初始化和腳本運行
          posted on 2010-01-18 13:04 朔望魔刃 閱讀(6115) 評論(2)  編輯  收藏 所屬分類: JavaScript

          評論:
          # re: jsp通過js按鈕導出word小結 2013-11-11 23:12 | xzvc
          xvzv  回復  更多評論
            
          # re: jsp通過js按鈕導出word小結 2016-05-17 08:44 | q
          下達  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 开阳县| 宜宾县| 文安县| 石河子市| 新野县| 定远县| 徐汇区| 高州市| 佛山市| 禄丰县| 祁东县| 舞阳县| 南和县| 稷山县| 洪江市| 青冈县| 翁牛特旗| 嘉义县| 利津县| 喀喇| 浏阳市| 安平县| 什邡市| 交口县| 邮箱| 平乡县| 宜阳县| 广南县| 浑源县| 乌兰浩特市| 隆德县| 五家渠市| 桂东县| 贵溪市| 资源县| 临邑县| 民权县| 黄浦区| 潞城市| 嵩明县| 大竹县|