acerbic coffee
          走自己的路,讓別人跑步
          posts - 26,comments - 14,trackbacks - 0
          web中,如何讀取客戶端Word內(nèi)容并且顯示在頁(yè)面中?

            我發(fā)現(xiàn)有2種方法,一種是直接在客戶端操作,一種是把客戶端的word上傳到服務(wù)器端操作,這2種各有優(yōu)缺點(diǎn)。

            我現(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)前客戶端(可以傳入一個(gè)要保存的文件名).
          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;
          //獲得上傳控件對(duì)象
          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('請(qǐng)選擇對(duì)應(yīng)的Word文件');
          objUpFile.focus();
          }
          else if(UpFileValue.indexOf(".doc") == -1)
          {
          alert('您選擇的不是Word文件 \r\n請(qǐng)選擇正確的Word文件');
          objUpFile.focus();
          }
          else if(!os__xmlFSO.FileExists(objUpFile.value))
          {
          alert('對(duì)應(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)化后的值賦給頁(yè)面控件txtIdea的值,我為了將Word值保存進(jìn)數(shù)據(jù)庫(kù)所以用<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>

            注意頁(yè)面上需要添加以下2個(gè)控件和對(duì)應(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è)置,否則將無效

          添加評(píng)論
          單擊隱藏此項(xiàng)的評(píng)論。
          6月21日

          CSS中expression使用簡(jiǎn)介

          IE5及其以后版本支持在CSS中使用expression,用來把CSS屬性和Javas cript表達(dá)式關(guān)聯(lián)起來,這里的CSS屬性可以是元素固有的屬性,也可以是自定義屬性。就是說CSS屬性后面可以是一段Javas cript表達(dá)式,CSS屬性的值等于Javas cript表達(dá)式計(jì)算的結(jié)果。 在表達(dá)式中可以直接引用元素自身的屬性和方法,也可以使用其他瀏覽器對(duì)象。這個(gè)表達(dá)式就好像是在這個(gè)元素的一個(gè)成員函數(shù)中一樣。

            給元素固有屬性賦值

            例如,你可以依照瀏覽器的大小來安置一個(gè)元素的位置。

          #myDiv {
          position: absolute;
          width: 100px;
          height: 100px;
          left: expression(document.body.offsetWidth - 110 "px");
          top: expression(document.body.offsetHeight - 110 "px");
          background: red;
          }

            給元素自定義屬性賦值

            例如,消除頁(yè)面上的鏈接虛線框。 通常的做法是:

          <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)勢(shì),但如果你的頁(yè)面上有幾十甚至上百個(gè)鏈接,這時(shí)的你難道還會(huì)機(jī)械式地Ctrl C,Ctrl V么,何況兩者一比較,哪個(gè)產(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()里的語(yǔ)句就是JS腳本,在自定義屬性與expression之間可別忘了還有一個(gè)引號(hào),因?yàn)閷?shí)質(zhì)還是CSS,所以放在style標(biāo)簽內(nèi),而非s cript內(nèi)。OK,這樣就很容易地用一句話實(shí)現(xiàn)了頁(yè)面中的鏈接虛線框的消除。不過你先別得意,如果觸發(fā)的特效是CSS的屬性變化,那么出來的結(jié)果會(huì)跟你的本意有差別。例如你想隨鼠標(biāo)的移進(jìn)移出而改變頁(yè)面中的文本框顏色更改,你可能想當(dāng)然的會(huì)認(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)腳本出錯(cuò),正確的寫法應(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">

          添加評(píng)論
          單擊隱藏此項(xiàng)的評(píng)論。

          巧用CSS的RevealTrans濾鏡

          CSS的RevealTrans動(dòng)態(tài)濾鏡是一個(gè)神奇的濾鏡,它能產(chǎn)生23種動(dòng)態(tài)效果,更為奇妙的是它還能在23種動(dòng)態(tài)效果中隨機(jī)抽用其中的一種。用它來進(jìn)行網(wǎng)頁(yè)之間的動(dòng)態(tài)切換,簡(jiǎn)直方便極了,你只要在網(wǎng)頁(yè)源代碼的< head >與< /head >之間插入這樣一行代碼:< Meta content=revealTrans(Transition=14,Duration=3.0) http-equiv=Page-enter >,當(dāng)你進(jìn)入這個(gè)頁(yè)面時(shí),網(wǎng)頁(yè)將象拉幕一樣從中間向兩邊拉開,是不是別具一格?!
            RevealTrans濾鏡只有兩個(gè)參數(shù),Duration:是切換時(shí)間,以秒為單位;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、制作一個(gè)Revealtrans濾鏡,取名為“mytrans",其制作方法與前面介紹的靜態(tài)濾鏡相同,參數(shù)值為Transition=12,Duration=2。設(shè)置好后,在網(wǎng)頁(yè)源代碼的< head >與< /head >之間將有下面這樣的代碼:
          < style type="text/css" >
          < !--
          .mytrans { filter:revealTrans(Transition=12,Duration=2)}
          -- >
          < /style >
            2、插入一個(gè)層,我們把層的“Layer ID”改為“div1”(可直接在層的屬性面板上加入即可),并設(shè)置好層的背景和調(diào)整好層的大小,并把Revealtrans濾鏡加載到到層上,這時(shí)你看到的層的標(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)頁(yè)源代碼的< head >與< /head >之間插入下面這段Javascript程序:
            < script language="JavaScript" >
            < !--
            function HelpArray(len)
            {
            this.length=len;
            }
            // 建立一個(gè)數(shù)組,存放轉(zhuǎn)換的內(nèi)容。
            HelpText=new HelpArray(5);
            HelpText[0]="在一個(gè)文檔使用動(dòng)態(tài)轉(zhuǎn)換的濾鏡(Revealtrans)其實(shí)是很容易的。";
            HelpText[1]="首先,為對(duì)象的樣式表單建立一個(gè)需要轉(zhuǎn)換的“Revaltrans"濾鏡,";
            HelpText[2]="然后,使用“apply()"方法防止錯(cuò)誤,";
            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è)置每段字幕演示的時(shí)間,以毫秒計(jì)。這里的時(shí)間要長(zhǎng)于濾鏡中的時(shí)間,以保證在轉(zhuǎn)換結(jié)束后能停留一段時(shí)間。
            // 以方便看清楚字幕內(nèi)容。在本例中字幕演示的時(shí)間是6秒,濾鏡中設(shè)置的轉(zhuǎn)換時(shí)間是2秒。
            mytimeout=setTimeout("playHelp()",6000);
            }
            -- >
            < /script >
            4、在網(wǎng)頁(yè)的源代碼的< body >中加入這樣一句代碼:onload="playHelp()"。
          posted on 2006-10-22 10:52 acerbic coffee 閱讀(1595) 評(píng)論(0)  編輯  收藏 所屬分類: 個(gè)人記錄
          主站蜘蛛池模板: 建水县| 寻甸| 长白| 车致| 阳朔县| 崇信县| 友谊县| 中方县| 曲靖市| 会同县| 卢氏县| 松原市| 山西省| 平利县| 邛崃市| 望奎县| 民和| 鄱阳县| 宁都县| 长春市| 措美县| 土默特右旗| 阿鲁科尔沁旗| 铁力市| 吉隆县| 邮箱| 黎川县| 洪江市| 建水县| 榆中县| 嘉义县| 乌苏市| 威宁| 古浪县| 丁青县| 札达县| 微山县| 庆元县| 辽阳县| 岑巩县| 桂平市|