網上流傳了大量大量的如何導出,結果都不太實用。
網上流傳通用的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
朔望魔刃 閱讀(6111)
評論(2) 編輯 收藏 所屬分類:
JavaScript