我發(fā)現(xiàn)有2種方法,一種是直接在客戶端操作,一種是把客戶端的word上傳到服務(wù)器端操作,這2種各有優(yōu)缺點。
我現(xiàn)就舉出客戶端操作的例子
首先在.aspx中添加如下js代碼
<script language='javascript'>
//默認(rèn)word轉(zhuǎn)化文件放于C:\\下
var os__localPath = "C:\\";
//保存的文件名
var os__localFile = "defaultFileWord.htm";
var os__xmlDom = new ActiveXObject("MSXML2.DOMDocument");
var os__xmlFSO ;
//保存數(shù)據(jù)到當(dāng)前客戶端(可以傳入一個要保存的文件名).
function os_SaveToLocal()
{
var _saveAs = "";
if(arguments.length > 0)
_saveAs = arguments[0] + "";
else
_saveAs = os__localFile;
try
{
if(os__xmlFSO == null)
os__xmlFSO = new ActiveXObject("Scripting.FileSystemObject");
}
catch(e){window.alert(e);}
}
//Word轉(zhuǎn)化為Html文件
function WorcChangeHtml()
{
var os_xmlFSO;
//獲得上傳控件對象
var objUpFile = window.document.Form1.updFile;
//獲得客戶端Word文件路徑和文件
var UpFileValue = window.document.Form1.updFile.value;
if(os__xmlFSO == null)
os__xmlFSO = new ActiveXObject("Scripting.FileSystemObject");
try
{
if(window.document.Form1.updFile.value == "")
{
alert('請選擇對應(yīng)的Word文件');
objUpFile.focus();
}
else if(UpFileValue.indexOf(".doc") == -1)
{
alert('您選擇的不是Word文件 \r\n請選擇正確的Word文件');
objUpFile.focus();
}
else if(!os__xmlFSO.FileExists(objUpFile.value))
{
alert('對應(yīng)的Word文件不存在');
objUpFile.focus();
}
else
{
var wdFormatHTML = 8;
var objWord = new ActiveXObject("Word.Application");
objWord.Application.Visible = false;
var objDoc = objWord.Documents.Open(UpFileValue);
objDoc.SaveAs(os__localPath+os__localFile, wdFormatHTML);
window.document.Form1.updFile.value = "";
objDoc.Close();
objWord.Quit();
var GetHtml = GetLine();
var iBeginIndex = GetHtml.indexOf("<body");
var iEndIndex = GetHtml.lastIndexOf("</body>");
GetHtml = GetHtml.substring(iBeginIndex,iEndIndex+7).replace("<body","<div");
GetHtml = GetHtml.replace("</body>","</div>");
//將轉(zhuǎn)化后的值賦給頁面控件txtIdea的值,我為了將Word值保存進(jìn)數(shù)據(jù)庫所以用<input type = "hidden" ..... 如果將Word內(nèi)容顯示可以考慮 window.document.Form1."你的顯示控件ID".innerText = GetHtml;
window.document.Form1.txtIdea.value = GetHtml;
}
}
catch(e){window.alert(e);}
}
//讀取文本文件
function GetLine()
{
var fso, txtfile, strValue;
var ForReading = 1, ForWriting = 2;
fso = new ActiveXObject("Scripting.FileSystemObject");
txtfile = fso.OpenTextFile(os__localPath+os__localFile, ForReading);
while(!txtfile.AtEndOfStream)
{
strValue = strValue + txtfile.ReadLine();
}
txtfile.Close();
return(strValue);
}
</script>
注意頁面上需要添加以下2個控件和對應(yīng)的客戶端事件
<input id="updFile" type="file" style="BORDER-RIGHT: 1px solid; BORDER-TOP: 1px solid; BORDER-LEFT: 1px solid; WIDTH: 77.46%; BORDER-BOTTOM: 1px solid; HEIGHT: 26px"
size="71"> <input style="BORDER-RIGHT: #999999 1px solid; BORDER-TOP: #999999 1px solid; FONT-SIZE: 15pt; BORDER-LEFT: #999999 1px solid; WIDTH: 103px; BORDER-BOTTOM: #999999 1px solid; HEIGHT: 28px"
onclick="WorcChangeHtml()" runat="server" id="btnUpLoad" type="submit" value="導(dǎo)入" name="btnUpLoad">
<textarea style="WIDTH: 15.25%; HEIGHT: 23px" rows="50" cols="16" id="txtIdea"
runat="server">
其中txtIdea中的值就是客戶端Word中的內(nèi)容了,注意:需要調(diào)整IE的安全性設(shè)置,否則將無效
CSS中expression使用簡介
給元素固有屬性賦值
例如,你可以依照瀏覽器的大小來安置一個元素的位置。
#myDiv {
position: absolute;
width: 100px;
height: 100px;
left: expression(document.body.offsetWidth - 110 "px");
top: expression(document.body.offsetHeight - 110 "px");
background: red;
}
給元素自定義屬性賦值
例如,消除頁面上的鏈接虛線框。 通常的做法是:
<a href="link1.htm" onfocus="this.blur()">link1</a>
<a href="link2.htm" onfocus="this.blur()">link2</a>
<a href="link3.htm" onfocus="this.blur()">link3</a>
粗看或許還體現(xiàn)不出采用expression的優(yōu)勢,但如果你的頁面上有幾十甚至上百個鏈接,這時的你難道還會機(jī)械式地Ctrl C,Ctrl V么,何況兩者一比較,哪個產(chǎn)生的冗余代碼更多呢?
采用expression的做法如下:
<style type="text/css">
a {star : expression(onfocus=this.blur)}
</style>
<a href="link1.htm">link1</a>
<a href="link2.htm">link2</a>
<a href="link3.htm">link3</a>
說明:里面的star就是自己任意定義的屬性,你可以隨自己喜好另外定義,接著包含在expression()里的語句就是JS腳本,在自定義屬性與expression之間可別忘了還有一個引號,因為實質(zhì)還是CSS,所以放在style標(biāo)簽內(nèi),而非s cript內(nèi)。OK,這樣就很容易地用一句話實現(xiàn)了頁面中的鏈接虛線框的消除。不過你先別得意,如果觸發(fā)的特效是CSS的屬性變化,那么出來的結(jié)果會跟你的本意有差別。例如你想隨鼠標(biāo)的移進(jìn)移出而改變頁面中的文本框顏色更改,你可能想當(dāng)然的會認(rèn)為應(yīng)該寫為
<style type="text/css">
input
{star : expression(onmouseover=this.style.backgroundColor="#FF0000";
onmouseout=this.style.backgroundColor="#FFFFFF")}
</style>
<style type="text/css">
input {star : expression(onmouseover=this.style.backgroundColor="#FF0000";
onmouseout=this.style.backgroundColor="#FFFFFF")}
</style>
<input type="text">
<input type="text">
<input type="text">
可結(jié)果卻是出現(xiàn)腳本出錯,正確的寫法應(yīng)該把CSS樣式的定義寫進(jìn)函數(shù)內(nèi),如下所示:
<style type="text/css">
input {star : expression(onmouseover=function()
{this.style.backgroundColor="#FF0000"},
onmouseout=function(){this.style.backgroundColor="#FFFFFF"}) }
</style>
<input type="text">
<input type="text">
<input type="text">
巧用CSS的RevealTrans濾鏡
RevealTrans濾鏡只有兩個參數(shù),Duration:是切換時間,以秒為單位;Transition:是切換方式,它有24種方式,詳見下表:
切換效果 Transition參數(shù)值 切換效果 Transition參數(shù)值 矩形從大至小 0 隨機(jī)溶解 12 矩形從小至大 1 從上下向中間展開 13 圓形從大至小 2 從中間向上下展開 14 圓形從小至大 3 從兩邊向中間展開 15 向上推開 4 從中間向兩邊展開 16 向下推開 5 從右上向左下展開 17 向右推開 6 從右下向左上展開 18 向左推開 7 從左上向右下展開 19 垂直形百葉窗 8 從左下向右上展開 20 水平形百葉窗 9 隨機(jī)水平細(xì)紋 21 水平棋盤 10 隨機(jī)垂直細(xì)紋 22 垂直棋盤 11 隨機(jī)選取一種特效 23
1、制作一個Revealtrans濾鏡,取名為“mytrans",其制作方法與前面介紹的靜態(tài)濾鏡相同,參數(shù)值為Transition=12,Duration=2。設(shè)置好后,在網(wǎng)頁源代碼的< head >與< /head >之間將有下面這樣的代碼:
< style type="text/css" >
< !--
.mytrans { filter:revealTrans(Transition=12,Duration=2)}
-- >
< /style >
2、插入一個層,我們把層的“Layer ID”改為“div1”(可直接在層的屬性面板上加入即可),并設(shè)置好層的背景和調(diào)整好層的大小,并把Revealtrans濾鏡加載到到層上,這時你看到的層的標(biāo)記代碼是這樣的:< div id="div1" style="position:absolute; width:680px; height:30px; z-index:37; background: #FFFFCC; layer-background-color: #FFFFCC; border: 1px none #000000" class="mytrans" >< /div >
3、在網(wǎng)頁源代碼的< head >與< /head >之間插入下面這段Javascript程序:
< script language="JavaScript" >
< !--
function HelpArray(len)
{
this.length=len;
}
// 建立一個數(shù)組,存放轉(zhuǎn)換的內(nèi)容。
HelpText=new HelpArray(5);
HelpText[0]="在一個文檔使用動態(tài)轉(zhuǎn)換的濾鏡(Revealtrans)其實是很容易的。";
HelpText[1]="首先,為對象的樣式表單建立一個需要轉(zhuǎn)換的“Revaltrans"濾鏡,";
HelpText[2]="然后,使用“apply()"方法防止錯誤,";
HelpText[3]="現(xiàn)在,你可以改變?nèi)魏文阆敫淖兊臇|西,";
HelpText[4]="最后,“play()"方法開始進(jìn)行轉(zhuǎn)換。";
ScriptText=new HelpArray(5);
var i= -1;
// 顯示轉(zhuǎn)換效果
function playHelp()
{
if (i==4)
{ i=0 ;}
else
{ i++; }
div1.filters[0].apply();
div1.innerText=HelpText[i];
div1.filters[0].play();
// 設(shè)置每段字幕演示的時間,以毫秒計。這里的時間要長于濾鏡中的時間,以保證在轉(zhuǎn)換結(jié)束后能停留一段時間。
// 以方便看清楚字幕內(nèi)容。在本例中字幕演示的時間是6秒,濾鏡中設(shè)置的轉(zhuǎn)換時間是2秒。
mytimeout=setTimeout("playHelp()",6000);
}
-- >
< /script >
4、在網(wǎng)頁的源代碼的< body >中加入這樣一句代碼:onload="playHelp()"。